Để đơn giản, các tác giả giả thiết m là mũ số của 2 , trƣờng hợp ngƣợc lại có thể bổ sung thêm các bít “đệm”. Các tác giả cũng giả thiết n là bội số của m, và trong trƣờng hợp này các bộ xử lý đƣợc gán nhãn lần lƣợt là P0 (nguồn), P1, ..., Pn. Trong trƣờng hợp n không phải là bội số của m, giải thuật AS vẫn làm việc đúng đắn với việc gán nhãn các bộ xử lý là Pa, Pa+1, ..., Pn+a, với a = m (n/m – n/m). Giả thiết m là số mũ của 2 sẽ sử dụng cho việc phân đôi tiến trình, còn giả thiết n là bội số của m dùng cho việc xác định các mốc kiểm tra phân tách tiến trình của giải thuật.
Các bít dữ liệu tại mỗi bộ xử lý đƣợc sửa lỗi theo thứ tự tăng chỉ mục theo các thông báo sửa lỗi nhận đƣợc từ bộ xử lý liền trƣớc trong chuỗi. Không có bộ xử lý nào sinh ra thông báo sửa lỗi bít j và gửi cho bộ xử lý liền sau khi nó chƣa biết các bít 0, .., j của nó đã đúng đắn; do vậy vùng “đã quét” đƣợc mở rộng một cách đơn điệu từ một góc dƣới trái nhƣ Hình 3.1.
Hình 3.1.Một trạng thái của hệ thống khi thực hiện giải thuật AS
Mỗi tiến trình Q đƣợc đặc tả bởi bộ năm <yQ, mQ, eQ, bQ, cQ>, trong đó yQ và mQ là hai tham số cố định chỉ cao độ (Altitude) và chiều cao (Height) của tiến trình Q. Q có nhiệm vụ quét các bít có chỉ mục từ yQ – mQ + 1 đến yQ trên các bộ xử lý từ bộ xử lý liền sau Q đến bộ xử lý sau, gần Q nhất có chỉ mục từ mQ-cột – chỉ mục chia hết cho
mQ. Vùng các bít mà Q chịu tránh nhiệm quét có dạng hình chữ nhật và đƣợc gọi là Q- chữ nhật. Các khái niệm đƣợc mô tả trong Hình 3.2.
Hình 3.2. Vùng quét của bộ xử lý Q
Các chỉ mục mQ-cột chia hết cho mQ tạo ra các mốc bộ xử lý tại đó việc xem xét sự phân tách tiến trình sẽ đƣợc thực hiện lại. Một quan sát quan trọng mà các tác giả [3] đã nhận đƣợc là giải thuật thực hiện một cách linh động. Giả sử một tiến trình bắt đầu chỉnh sửa lỗi trong Q-chữ nhật của nó, nó bắt đầu sửa lỗi và chuyển sang bộ lý tiếp sau và nó thực hiện hoàn toàn tƣơng tự nhƣ trong giải thuật Cập nhật Tăng trưởng, nếu nhƣ tiến trình tiến triển nhanh - gặp phải ít lỗi. Còn trong trƣờng hợp ngƣợc lại - tiến triển chậm, dấu hiệu của việc gặp nhiều lỗi, nó có thể “dẫn ống” một phần nhiệm vụ của nó bằng cách sinh ra hai tiến trình con và giao nhiệm vụ cho mỗi tiến trình con một chữ nhật con của Q-chữ nhật mà nó chịu trách nhiệm. Các tiến trình con này sẽ thực hiện nhiệm vụ giống nhƣ tiến trình cha, nó lại cũng có thể sinh ra tiến trình con tiếp theo hoặc tự nó hoàn thành nhiệm vụ.
Nói cách khác, cho đến khi kết thúc, một tiến trình Q có thể đã tạo 0, 2, hoặc 4 tiến trình con (xem Hình 3.3), hoặc cũng có thể không có tiến trình con nào đƣợc tạo, hoặc một trong các cặp tiến trình con U, L và U’, L’ đƣợc tạo, hoặc cả bốn tiền trình con đƣợc tạo. Điều kiện để sinh tiến trình con sẽ đƣợc mô tả sau đây.
Hình 3.3.Hình chữ nhật của các tiến trình con của tiến trình Q
Mỗi khi sửa một lỗi, Q tăng số đếm lỗi eQ. eQ là số lỗi mà tiến trình Q đã sửa, nhận các giá trị trong khoảng từ 0 đến mQ.
Các thông báo đƣợc gán nhãn với chỉ mục từ 1 đến m, tƣơng ứng với cao độ của bít dữ liệu chứa trong thông báo. Các thông báo thỏa mãn điều kiện “đơn điệu cục bộ” nhƣ sau:
Các thông báo được gửi từ một bộ xử lý bất kỳ (bởi nhiều tiến trình) đến bộ xử lý sau nó xuất hiện theo thứ tự không giảm cao độ.
Giải thuật sử dụng hai loại thông báo: thông báo sửa lỗi và thông báo chuyển tiến trình. Trong thông báo sửa lỗi, tiến trình báo cho bộ xử lý liền sau thay đổi bít j, 0 ≤ j ≤ m. (Nhờ giả thiết biết láng giềng, một bộ xử lý biết dữ liệu của bộ xử lý liền sau nó). Một thông báo sửa lỗi có kích thƣớc 1 + log m bít (bít đầu tiên đƣợc dùng để chỉ loại thông báo là thông báo sửa lỗi, log m bít còn lại chỉ vị trí bít j), và có đúng ∆ thông báo dạng này, mỗi thông báo cho một lỗi.
Loại thông báo thứ hai đƣợc sử dụng là thông báo chuyển tiến trình. Thông báo này đơn giản là cách thức để tiến trình chuyển từ bộ xử lý hiện tại sang bộ xử lý liền sau. Thông báo này có dạng <y, h, e, b, c> với y là cao độ, h là chiều cao, e là số lỗi đã gặp, b chỉ một trong hai chế độ tiến trình đang thực hiện, và c cho biết tiến trình đang
xét có phải là tiến trình chính hay không. Kích thƣớc một thông báo chuyển tiến trình là 3 + 3*log m (với y, h, và e có kích thƣớc log m bít ; b, c có kích thƣớc 1 bít, và 1 bít chỉ loại thông báo là thông báo chuyển tiến trình).
Tại thời điểm bất kỳ, một tiến trình ở một trong hai chế độ: chế độ mở hoặc chế độ tách. Khi ở chế độ mở, tiến trình sửa các lỗi mà nó gặp; ở chế độ tách, nó giao nhiệm vụ cho các tiến trình con và theo sát các tiến trình con cho đến khi chúng hết nhiệm vụ và biến mất. (Xem Hình 3.4).
Hình 3.4.Hoạt động của một tiến trình (mũi tên biểu diễn thông báo sửa lỗi )
Khi bắt đầu chế độ mở, tiến trình đặt bộ đếm lỗi e của nó bằng 0 và bắt đầu sửa mọi lỗi mà nó gặp theo thứ tự tăng cao độ. Khi tiến trình đã quét song đoạn dữ liệu trên bộ xử lý kế tiếp thuộc trách nhiệm của nó, tiến trình chuyển sang bộ xử lý kế tiếp và tiếp tục hoạt động ở chế độ mở. Mỗi khi sửa đƣợc một lỗi nó tăng e lên 1.
Tiến trình (với chiều cao mQ) tiếp tục hoạt động ở chế độ mở cho đến khi hoặc nó gặp mQ-cột, và kết thúc (nếu không phải là tiến trình chính); hoặc gặp mQ/2-cột không phải là mQ -cột, trong trƣờng hợp này, nếu không phải là tiến trình chính, nó đặt e = 0 để bắt đầu một chế độ mở mới, còn nếu nó là tiến trình chính thì e chính bằng giá trị e
Ở chế độ tách, tiến trình không thực hiện sửa lỗi, thay vì đó, nó tạo ra hai tiến trình con, mỗi tiến trình con chịu trách nhiệm quét một nửa phần bít thuộc trách nhiệm của tiến trình cha. Tiến trình cha theo sát các tiến trình con cho đến khi chúng kết thúc.
Nếu tiến trình cha có cao độ yQ và chiều cao mQ, chiều cao của các tiến trình con sẽ là mQ/2, tiến trình con trên có cao độ yQ, tiến trình con dƣới có cao độ yQ-mQ/2. Cả hai tiến trình con kết thúc tại mQ/2-cột tiếp theo. Nhƣ vậy, mỗi tiến trình con có trách nhiệm quét một hình chữ nhật có độ rộng lớn nhất là mQ/2.
Để thực hiện dẫn ống và đảm bảo điều kiện đơn điệu cục bộ, mọi thông báo của tiến trình con dƣới đƣợc gửi trƣớc các thông báo của tiến trình con trên. Tiến trình cha, nhƣ vậy, chỉ cần theo sau tiến trình con trên. Quan sát rằng khi tiến trình cha chuyển từ bộ xử lý Pisang bộ xử lý Pi+1, dữ liệu của Pi+1 đã đƣợc quét đến cao độ yQ.
Khi tiến trình con kết thúc ở mQ/2-cột, nếu đây cũng là mQ-cột, tiến trình cha (không phải tiến trình chính) cũng kết thúc; ngƣợc lại, tiến trình cha đặt e = 0 và bắt đầu chế độ mở mới.
Nếu tiến trình cha là tiến trình chính, sau khi gặp mQ-cột, nó đặt e = 0 và bắt đầu chế độ mở mới nếu nó chƣa đến bộ xử lý cuối cùng.