Các đơn vị chức năng cơ bản trong sơ đồ khối cấu trúc của một CPU công nghệ tiên tiến gồm: A-BUS Address BUS: BUS địa chỉ D-BUS Data BUS: BUS dữ liệu C-BUS Control BUS: BUS điều khiển
Trang 1Chương I
Các Hệ Vi xử lý tiên tiến
I.1 Tổng quan về Hệ Vi xử lý tiên tiến
Các hệ Vi xử lý tiên tiến bắt đầu xuất hiện vào giữa những năm 1990 từ các hãng chế tạo hàng đầu thế giới như Intel, Motorola, Sun, IBM, DEC, AMD, … Đặc điểm cơ bản của các hệ Vi xử lý loại này là xử lý dữ liệu 32 bit hoặc
64 bit BUS dữ liệu trong (Internal Data BUS) và BUS dữ liệu ngoài (External Data BUS) thường là 32 bit hoặc 64 bit
A-BUS 32n
D-BUS 32+j
C-BUS
BIU (BUS Inter- face Unit)
PUIQ (Prefetch Unit & Instruction Queue)
DU (Decoding Unit)
ICACHE (Instruction cache)
DCACHE (Data Cache)
BTC (Target Control Cache Unit)
CU (Control Unit)
MMU (Me- mory Ma- nage- ment Unit) SFU (Spe- cial Func- tion Unit)
BUS nội (Internal BUS) 32n
IU (Integer Unit) FPU (Floating Point Unit) IRF
(Integer Register File)
FPRF (Floating Point Register
File)
IOU (Integer Operation Unit)
FPOU (Floating Point Operation
Unit)
Hình I.1 Sơ đồ khối bộ Vi xử lý công nghệ tiên tiến
Trang 2
Các đơn vị chức năng cơ bản trong sơ đồ khối cấu trúc của một CPU công nghệ tiên tiến gồm:
A-BUS (Address BUS): BUS địa chỉ
D-BUS (Data BUS): BUS dữ liệu
C-BUS (Control BUS): BUS điều khiển
BIU (BUS Interface Unit): Đơn vị giao tiếp BUS
MMU (Memory Management Unit): Đơn vị quản lý bộ
DU (Decoding Unit): Đơn vị giải mã
ICACHE (Instruction Cache): Cache lệnh
DCACHE (Data Cache): Cache dữ liệu
BTC (Branche Target Control Cache Unit): Đơn vị
cache điều khiển đích rẽ nhánh
CU (Control Unit): Đơn vị điều khiển
IU (Integer Unit): Đơn vị số nguyên
FPU (Floating Point Unit): Đơn vị dấu phẩy động IRF (Integer Register File): Tệp thanh ghi số nguyên IOU (Integer Operation Unit): Đơn vị thao tác số
nguyên
Trang 3FPRF (Floating Point Register File): Tệp thanh ghi số
dấu phẩy động
FPOU (Floating Point Operation Unit): Đơn vị thao
tác số dấu phẩy động
Với các bộ Vi xử lý 32 bit, các thanh ghi FPR và đơn vị
số nguyên IU là 32 bit, BUS dữ liệu có thể là 32 bit, còn trong các bộ Vi xử lý 64 bit, thì IU là 64 bit, các FPR là 64
bit, BUS dữ liệu có thể là 64, 64x3 hoặc 64x4 bit (32n hoặc 32k, trong đó n, k là các số nguyên) BUS địa chỉ thường
cho phép quản lý bộ nhớ có dung lượng đến 4GB (232), hoặc lớn hơn với BUS địa chỉ 32+j bit
Đơn vị giao tiếp BUS (BIU) là bộ đệm giữa các khối
chức năng bên trong CPU với các thành phần chức năng bên ngoài gồm bộ nhớ, thiết bị vào/ra và được tổ chức hành ba loại giao tiếp sau:
Giao tiếp dữ liệu (Data Interface)
Giao tiếp địa chỉ (Address Interface)
Giao tiếp điều khiển (Control Interface)
Các thành phần chức năng bên trong CPU được liên kết
với nhau qua BUS bên trong (Internal BUS) Giao tiếp dữ
liệu thực hiện việc kết nối trực tiếp với PUIQ và vùng nhớ cache Giao tiếp địa chỉ được tạo bởi đơn vị MMU và địa chỉ của các vị trí nhớ, của thiết bị ngoại vi được đưa tới các thành phần tương ứng Giao tiếp điều khiển gửi các tín hiệu điều khiển hoạt động và nhận các tín hiệu trạng thái (trạng thái sẵn sàng, tín hiệu yêu cầu ngắt v.v…), của các thành phần chức năng có liên lạc trao đổi dữ liệu với CPU Các liên kết này được nối trực tiếp với đơn vị điều khiển CU
Trang 4Đơn vị tiền đọc lệnh và hàng lệnh (PUIQ) được xây
dựng từ các mạch logic để đọc trước các lệnh từ ICACHE
và đặt lệnh vào hàng đợi Hàng đợi được tổ chức theo
nguyên lý FIFO (First In First Out) Hàng đợi thường có độ
dài từ 8 đến 32 byte Từ hàng đợi, lệnh được chuyển tới đơn
vị giải mã DU Ở các hệ Vi xử lý tiên tiến, DU có thể đồng thời giải mã một số lệnh để được thực hiện theo cơ chế xử
lý song song
Đơn vị các chức năng đặc biệt (SFU) bao gồm các
đơn vị chức năng bổ sung thêm cho CPU như đơn vị đồ họa
(Graphic Unit), đơn vị xử lý tín hiệu (Signal Processing Unit), đơn vị xử lý ma trận và vector (Vector and Matrix Unit), v.v… Một số bộ Vi xử lý có thể được tích hợp thêm
một số SFU và cấu trúc này làm giảm tối thiểu thời gian trễ giao tiếp, nâng hiệu suất CPU lên đáng kể
Bộ nhớ Cache (Cache Memory) là bộ nhớ trung gian
có tốc độ truy xuất rất cao, là vùng nhớ đệm giữa CPU và
bộ nhớ chính Với các CPU tiên tiến, bộ nhớ cache có dung
Hình I.2 Đơn vị giao tiếp BUS BIU
ICACHE
DCACHE
MMU Memory Management Unit
Internal BUS 32n
32k Data
BUS
Trang 5lượng đủ lớn và tối ưu giúp cải tiến đáng kể hiệu suất làm việc của CPU nhờ được cung cấp lệnh và dữ liệu nhanh hơn nhiều so với bộ nhớ chính Bộ nhớ cache thường được chia
ra thành cache lệnh (ICACHE) và cache dữ liệu (DCACHE) BIU làm nhiệm vụ lấy thông tin (lệnh và dữ liệu) từ bộ nhớ chính vào bộ nhớ cache, ICACHE được kết nối trực tiếp với PUIQ ICACHE và DCACHE được kết nối với các thành phần chức năng của CPU thông qua BUS bên
trong (internal BUS) và BUS dữ liệu điều hành ODB (Operation Data BUS) Thông thường ODB có thể có độ
rộng là 128 đến 256 bit để có khả năng chuyển tải một lúc nhiều toán hạng Có thể thấy được vai trò quan trọng của bộ nhớ Cache thông qua sơ đồ tổ chức bộ nhớ theo phân cấp như ở hình I.3
Cache thứ cấp L2 nằm giữa cache sơ cấp L1 và bộ nhớ chính, kết nối trực tiếp với CPU không qua BUS hệ thống, được chế tạo từ RAM tĩnh nên có tốc độ truy xuất rất nhanh Dung lượng cache thứ cấp L2 có thể lên đến hơn vài MB Điều khiển và giao tiếp cache thứ cấp là mạch logic tổ hợp được tích hợp bên trong CPU
CPU Tập các thanh ghi
Trang 6Hình I.5 cho thấy trong kiến trúc siêu hướng (superscalar)
ICACHE được liên kết trực tiếp với đơn vị tiền đọc lệnh để thực thi việc xử lý song song các lệnh
BUS thao tác dữ liệu ODB 32n
Hình I.4 Kết nối CACHE trong Vi xử lý
ICACHE
Instruction Fetch
Decoding Unit Control Unit
Đơn vị thao tác đường ống i (Pipelined Operation Unit i)
32i
32i
Trang 7Để nâng cao hiệu suất thực hiện, nhất là khi gặp các lệnh rẽ nhánh, các CPU được tích hợp thêm cache đích rẽ
nhánh BTC (Branche Target Cache) Lệnh đích đầu tiên của
lệnh rẽ nhánh được nạp vào vùng cache này, nên thời gian trễ do tìm lệnh đích trong bộ nhớ chính được giảm đáng kể Trong một số trường hợp BTC chỉ chứa địa chỉ của các lệnh đích rẽ nhánh, chứ không chứa chính các lệnh đó
Đơn vị điều khiển (CU) có thể là “cứng hóa”, hoặc
được lập trình như đối với các CPU họ x86 của Intel Trong các CPU kiến trúc RISC, CU thường được “cứng hóa” nhằm tăng tốc độ thực hiện lệnh chỉ trong một chu kỳ đơn Hầu hết các tín hiệu điều khiển của giao tiếp điều khiển được kết nối với CU Các tín hiệu từ đơn vị giải mã lệnh cũng được đưa về CU Tín hiệu phát ra từ CU được đưa đến các thành phần chức năng thực hiện lệnh
Đơn vị số nguyên (IU) thực hiện các phép xử lý với dữ
liệu nguyên (integer) như các phép tính số học cộng/trừ,
nhân/chia IU có tệp thanh ghi 32 hoặc 64bit phụ thuộc vào loại CPU Các Vi xử lý kiến trúc CISC có từ 8 đến 16 thanh ghi, còn các CPU kiến trúc RISC có thể có từ 32 đến hơn
100 thanh ghi Dòng dữ liệu di chuyển theo hai đường (cho mỗi toán hạng là một đường) để tới các đơn vị thao tác xử lý
thông qua ODB Đơn vị điều phối lệnh đã dược giải mã nhận các tín hiệu từ CU và gửi tới các đơn vị thực hiện phép xử lý
Hình I.5 Xử lý lệnh trong kiến trúc siêu hướng (Superscalar)
Trang 8Tương tự, đơn vị số dấu phẩy động (FPU) nhận dữ
liệu từ DCACHE thông qua BUS thao tác dữ liệu chuyển tới
các đơn vị xử lý Đơn vị dịch ống (Barrel Shifter) có thể
thực hiện phép dịch nhiều bit trong một chu kỳ đơn
FPU có cấu trúc hoàn toàn tương tự IU, chỉ thay thế các khối xử lý nguyên bằng các khối xử lý dấu phẩy động Với
tệp các thanh ghi thì ở đơn vị số dấu phẩy động, N = 8 với
các CPU CISC và là 32 hoặc nhiều hơn với các CPU RISC
Số dấu phẩy động được biểu diễn theo chuẩn IEEE
754-1985 với chính xác đơn là 32 bit, chính xác gấp đôi là 64 bit, số chính xác mở rộng lên tới 80 bit
Đơn vị điều khiển
BUS bên trong 32n
Đơn vị điều phối lệnh
đã được giải mã (Decoded Instruction Dispatcher)
Đến FPU hoặc SFU
Hình I.6 Đơn vị số nguyên IU
Dịch ống (Barrel shifter)
Trang 9Đơn vị quản lý bộ nhớ (MMU) thực hiện các chức
năng:
Chuyển đổi địa chỉ ảo hay địa chỉ logic thành địa chỉ vật lý của ô nhớ Địa chỉ này được chuyển tới
bộ nhớ cache hoặc tới bộ nhớ chính
theo đặc quyền
(Translation Lookaside Buffer) hay cache chuyển đổi địa chỉ ATC (Address Translation Cache) để
chuyển đổi địa chỉ ảo thành địa chỉ vật lý
Các chip Vi xử lý công nghệ cao thường có đơn vị
chức năng phân trang (Paging Unit) và TLB, hoặc ATC, chỉ
có riêng họ Vi xử lý x86 của Intel có thêm đơn vị phân đoạn
(Segment Unit) Trong MMU còn có mạch logic thực hiện
chức năng giám sát các truy nhập đến các thư mục trang và
BUS bên trong (Internal BUS)
Đơn vị phân trang Đơn vị phân đoạn
Từ BIU
Hình I.7 Đơn vị quản lý bộ nhớ MMU
Trang 10các bảng tương ứng trong bộ nhớ chính, và nạp vào TLB số hiệu trang nếu như không tìm thấy trong TLB (hiện tượng chưa nạp số hiệu trang)
I.2 Đặc điểm kiến trúc Hệ Vi xử lý tiên tiến
Nói đến các hệ thống máy tính tiên tiến, khái niệm xử
lý song song được quan tâm nhiều nhất, và là cơ sở để đánh giá tính tiên tiến, hiện đại của hệ thống Phạm trù công nghệ trong các Hệ Vi xử lý tiên tiến chủ yếu tập trung vào các nhu cầu cấp thiết của sự hoàn thiện cấu hình cao, giá thành
hạ, tổ chức sản xuất hàng thương phẩm và ứng dụng thực tiễn
Xử lý song song xuất hiện dưới những hình thức tổ
chức và kiến trúc khác nhau, trong đó, các kiến trúc siêu hướng (Superscalar), kiến trúc đường ống (Pipeline), kiến trúc đa xử lý (Multiptiprocessor) và kiến trúc từ lệnh rất dài (VLIW – Very Long Instruction Word) là những kiến trúc
tiêu biểu nhất Tuy dưới dạng các kiến trúc khác nhau, nhưng về nguyên lý, xử lý song song có thể hiểu được thông qua một ví dụ cụ thể sau đây:
Giả sử một nhiệm vụ T có thể chia thành n công việc
con có kích thước xấp xỉ nhau và có thể xử lý đồng thời (thực hiện song song), thì nhiệm vụ T sẽ được thực hiện xong trong một khoảng thời gian ngắn hơn rất nhiều so với cách thực hiện theo tuần tự Ví dụ phải tính tổng của N số hạng b1, b2, … , bN Đoạn chương trình đơn giản tính tổng
đó có thể mô tả như sau:
SUM = 0;
for i = 1 to N do SUM = SUM +b(i);
Trang 11Trong máy tuần tự, sau N phép cộng, tổng sẽ là kết quả
ở biến SUM Nếu mỗi phép cộng được thực hiện trong
khoảng thời gian là T add thì tổng thời gian là xấp xỉ NT add Giả sử có một máy tính có n bộ xử lý P1, P2, …, Pn giống nhau được kết nối theo cấu trúc mảng 2 chiều, mỗi bộ đồng
thời tiếp nhận (receive) và gửi (send) dữ liệu cho bộ xử lý
kề cận
Nếu thực hiện xử lý song song để tính tổng SUM trên
hệ thống này, ta có thể chia cho mỗi bộ xử lý tính tổng của k
số hạng, tổng SUM được tính qua k tổng của N/n số hạng,
mà các tổng con này được tiến hành tính đồng thời Bộ xử
lý Pi chuyển kết quả phép cộng của nó cho bộ xử lý Pi+1, Kết quả của bộ xử lý Pi+1 chuyển sang cho bộ xử lý P i+2,
v.v…Như vậy, kết quả tống N số hạng sẽ nằm ở bộ xử lý P n
Đoạn chương trình thực hiện phép tính tổng N số hạng sẽ
Trang 12begin
receive (LEFT, LEFTSUM);
if INDEX < n then send (RIGHT,SUM);
end;
Từ chương trình thực hiện, thấy rằng thời gian T(n) cần
để tính tổng SUM theo xử lý song song trên n bộ xử lý có 2
Thời gian truyền dữ liệu giữa các bộ Vi xử lý lớn hơn
rất nhiều so với thời gian tính toán, K2 » K1 và nếu n càng lớn thì T C càng lớn Rõ ràng nếu n = 1 thì T(n) = K1N
I.3 Phân loại các bộ Vi xử lý song song
Các bộ Vi xử lý song song có thể phân loại theo hành
vi hoặc theo cấu trúc Theo hành vi, chúng được phân loại
n N
K1
Trang 13dựa trên số lượng các lệnh và các toán hạng được xử lý đồng thời, còn theo cấu trúc chúng được phân loại theo cách kết nối các bộ Vi xử lý trong hệ thống Tuy nhiên cả hai cách phân loại này cũng chỉ là tương đối
I.3.1 Phân loại theo Flynn
a) Khái niệm chuỗi lệnh và chuỗi dữ liệu
Đơn vị xử lý P đọc các lệnh (Fetching Instructions) và các dữ liệu (Operands) từ bộ nhớ, thực hiện lệnh (Executing Instructions) và chuyển kết quả vào bộ nhớ chính Các bước thực hiện này gộp thành 1 chu kỳ lệnh (Instruction Cycle)
Các lệnh có thể hình thành một chuỗi lệnh liên tiếp nhau
(Instruction Stream) được đọc từ bộ nhớ vào bộ xử lý, các
toán hạng cũng hình thành 1 chuỗi dữ liệu theo sau đó tới bộ
a) Kiến trúc 1 processor SISD
b) Kiến trúc multiprocessor SIMD với bộ nhớ phân tán
bộ nhớ chính
Trang 14b) Phân loại theo Flynn là phân loại theo chuỗi lệnh và chuỗi dữ liệu Hình a, b, c, d dưới đây mô tả các hệ
xử lý song song theo cách phân loại của Flynn
Các ký hiệu viết tắt:
CU (Control Unit) Đơn vị điều khiển
c) Kiến trúc MIMD với bộ nhớ chia sẻ
Trang 15PU (Processing Unit) Đơn vị xử lý
MU (Memory Unit) Đơn vị nhớ
IS (Instruction Stream) Chuỗi lệnh
DS (Data Stream) Chuỗi dữ liệu
PE (Processing Element) Phần tử xử lý
LM (Local Memory) Bộ nhớ cục bộ
Như vậy, theo Flynn, các hệ thống xử lý song song được chia thành 4 loại theo số lượng chuỗi lệnh và chuỗi dữ liệu:
a) SISD (Single Instruction Stream over Single Data Stream) Máy tính với chuỗi lệnh đơn xử lý chuỗi
dữ liệu đơn
b) SIMD (Single Instruction Stream over Multiple Data Stream) Máy tính với chuỗi lệnh đơn xử lý
chuỗi đa dữ liệu
c) MISD (Multiple Instruction Stream over Single Data Stream) Máy tính với chuỗi đa lệnh xử lý
chuỗi dữ liệu đơn
d) MIMD (Multiple Instruction Stream over Multiple Data Stream) Máy tính với chuỗi đa lệnh xử lý
chuỗi đa dữ liệu
Với cách phân loại như trên, trong thực tế máy tính MIMD thường được sử dụng như máy tính đa năng, còn các
hệ thống SIMD và MISD là những hệ thống máy tính chuyên dụng Trong thực tế, máy tính MIMD được sử dụng nhiều nhất, tiếp theo là các máy loại MISD rồi đến loại máy tính SIMD
Trang 16I.3.2 Phân loại theo kiến trúc
Theo quan điểm kiến trúc, máy tính xử lý song song
được phân thành 2 loại chủ yếu là máy tính đa xử lý
(Multicomputers) Thực tế, các máy tính này khác nhau cơ bản ở tổ chức bộ nhớ chia sẻ dùng chung và tổ chức bộ nhớ phân tán
a) Đa xử lý với bộ nhớ chia sẻ được phân ra làm 3 loại:
Mô hình với bộ nhớ truy xuất đồng nhất (UMA – Uniform Memory-Access), bộ nhớ truy xuất không đồng nhất (NUMA – Nonuniform Memory-Access) và cuối cùng
là loại kiến trúc chỉ-có-bộ-nhớ-cache (COMA – Cache-Only Memory Architecture)
Với mô hình đa xử lý với bộ nhớ truy xuất bộ nhớ
đồng nhất (UMA), bộ nhớ vật lý được chia sẻ đồng nhất cho tất cả các đơn vị xử lý Tất cả các bộ xử lý đều có tốc độ truy xuất bằng nhau đối với tất cả các từ nhớ Mỗi đơn vị
xử lý có thể có cache riêng, nhưng các thiết bị ngoại vi thì
bị hạn chế Việc tổ chức đồng bộ và liên kết xử lý các sự
Trang 17kiện song song được thực hiện trong các đơn vị xử lý thông
qua việc chia sẻ biến lưu giữ trong bộ nhớ dùng chung Khi
tất cả các bộ xử lý đều có thời gian truy xuất như nhau đối
với các thiết bị ngoại vi, hệ thống được gọi là đa xử lý đối xứng Trong hệ thống này, tất cả các bộ xử lý đều có khả năng thực hiện các chương trình khả thi, cũng như kernel hệ điều hành và các thủ tục phục vụ ngoại vi Trong hệ thống
đa xử lý phi đối xứng chỉ có một số các đơn vị xử lý có khả
năng thực thi chương trình Đơn vị xử lý chủ có thể thực hiện các chương trình của hệ điều hành và phục vụ các thiết
bị ngoại vi, các bộ xử lý khác chỉ có khả năng phục vụ các
thiết bị ngoại vi và được gọi là các bộ xử lý gắn kèm (attached processors – Aps) Các bộ xử lý gắn kèm thực
hiện lệnh dưới sự giám sát của đơn vị xử lý chủ
Với mô hình đa xử lý truy xuất bộ nhớ không đồng nhất (NUMA), thời gian truy xuất đến một vị trí nhớ là khác
nhau Mô hình hệ thống NUMA có bộ nhớ chia sẻ được
phân phối cho từng đơn vị xử lý và được gọi là bộ nhớ cục
Trang 18Ngoài bộ nhớ phân tán, còn có thể có bộ nhớ toàn cục chia sẻ trong hệ thống đa xử lý Như vậy, sẽ có 3 khả năng truy xuất bộ nhớ: Nhanh nhất là truy xuất bộ nhớ cục bộ, tiếp đến là truy xuất bộ nhớ toàn cục, và chậm nhất là khi truy xuất bộ nhớ phụ
Mạng kết nối
Trang 19Có thể hiểu được dễ dàng, mô hình hệ thống này là sự hỗn hợp giữa bộ nhớ chia sẻ, bộ nhớ riêng với những quyền truy xuất riêng Có thể nhận ra trên hình I.11b rằng các bộ
xử lý được chia thành các cụm (cluster) Mỗi cụm là một hệ
thống UMA hoặc NUMA Các cụm được kết nối với bộ nhớ chia sẻ toàn cục Toàn bộ hệ thống có thể coi là một hệ thống NUMA Các bộ xử lý trên cùng một cụm được gọi là
modul cụm bộ nhớ-chia sẻ
Tất cả các cụm có quyền bình đẳng truy xuất bộ nhớ toàn cục Tất nhiên việc truy xuất bộ nhớ trong cụm bao giờ cũng nhanh hơn Mỗi cụm có thể xác định quyền truy xuất đến các bộ nhớ được ghép nối giữa các cụm
b) Mô hình hệ thống kiến trúc cache (COMA)
D: Directory (đường dẫn) C: Cache P: Processor
Hình I.12 Mô hình hệ đa xử lý COMA
Trang 20Có thể coi hệ thống COMA là trường hợp đặc biệt của NUMA, trong đó bộ nhớ phân tán được chuyển thành bộ nhớ cache Không tồn tại sự phân cấp bộ nhớ tại các điểm nút Toàn bộ dung lượng nhớ cache tạo ra không gian địa chỉ toàn cục Hiện tượng truy xuất cache từ ngoài phải thông qua đường dẫn cache phân tán D Việc phân cấp đường dẫn
D đôi khi cho phép định vị một bản sao chép cache tùy vào dạng mạng kết nối
Bên cạnh các kiến trúc UMA, NUMA, COMA, còn tồn tại những kiến trúc đa xử lý khác Ví dụ như mô hình kiến trúc truy xuất bộ nhớ không đồng nhất liên kết cache (CC-
NUMA: Cache-coherent non-uniforrm memory access) có
thể được xác định với bộ nhớ phân tán chia sẻ và các đường dẫn cache
c) Mô hình đa máy tính bộ nhớ phân tán
Hình I 13 Mô hình kiến trúc đa máy tính mạng liên kết chuyển thông điệp
Trang 21Hình I.13 là mô hình kiến trúc hệ thống đa máy tính bộ nhớ phân tán được cấu thành từ nhiều máy tính được gọi là
nút, kết nối với nhau thông qua mạng chuyển thông điệp
Mỗi nút là một máy tình độc lập cấu thành bởi bộ xử lý , bộ nhớ cục bộ, cũng có thể có thêm đĩa cứng, hoặc các thiết bị ngoại vi Mạng chuyển thông điệp thực thi việc kết nối tĩnh giữa các nút Các bộ nhớ cục bộ là riêng biệt với từng nút và chỉ có thể bị truy xuất bởi chính bộ xử lý tại nút đó Các hệ thống truyền thống này được gọi là hệ thống đa máy tính
không-truy-xuất-bộ-nhớ-từ-xa (no-remote-memory-access)
Tuy nhiên, việc đưa thêm bộ nhớ chia sẻ phân tán và khả năng truyền thông điệp giữa các nút thông qua liên kết mạng tĩnh đã loại bỏ khái niệm này
d) Mô hình hệ thống đa vector và các máy tính SIMD
Phần này giới thiệu sơ qua về các hệ thống siêu máy tính và các hệ thống bộ xử lý song song cho xử lý vector và
dữ liệu song song Có thể xếp loại chúng thành các máy tính vector đường ống hóa với các bộ xử lý mạnh được liên kết cứng kiểu vector, hay còn gọi là hệ thống SIMD xử lý các tập dữ liệu song song
Siêu máy tính vector là những máy tính có hướng hàng đầu Hình I.14 cho thấy bộ xử lý vector được gắn kèm
với bộ xử lý có hướng, và là hệ thống theo kiến trúc thanh ghi-đến-thanh ghi Khởi đầu chương trình và dữ liệu được
nạp vào bộ nhớ chính thông qua máy chủ Tất cả các lệnh được giải mã tại đơn vị điều khiển có hướng Nếu lệnh được giải mã là thao tác có hướng hay thao tác điều khiển chương trình, nó sẽ được thực thi trực tiếp tại bộ xử lý đường ống chức năng scalar Nếu lệnh được giải mã là thao tác vector,
nó được gửi tới đơn vị điều khiển vector Đơn vị điều khiển
Trang 22vector sẽ giám sát dòng dữ liệu vector giữa bộ nhớ chính và các đường ống vector chức năng Có thể có nhiều đường ống vector chức năng được tích hợp trong bộ xử lý vector Tập thanh ghi vector được sử dụng để lưu các toán hạng vector, kết quả tức thời và kết quả cuối cùng Các đường ống vector chức năng nhận toán hạng từ các thanh ghi này và ghi kết quả trở lại tập thanh ghi này Mỗi thanh ghi vector được gán với bộ đếm có chức năng đảm bảo quy trình sử dụng thanh ghi đó trong một chu kỳ đường ống Độ dài của thanh ghi vector là cố định, ví dụ với hệ thống siêu máy tính Cray Series là 64 thanh ghi 64bit
Còn có loại siêu máy tính theo kiến trúc bộ nhớ-đến-bộ nhớ mà ở đó, thay vì tập thanh ghi vector là đơn vị chuỗi
vector Các toán hạng vector lấy trực tiếp từ bộ nhớ chính
và kết quả được ghi trực tiếp vào bộ nhớ chính như các siêu
từ, có thể có độ dài đến 512 bit như ở siêu máy tính Cyber
205
Hình I.15 cho thấy rõ mô hình cấu trúc và hoạt động của một siêu máy tính SIMD với một dòng lệnh và nhiều dòng dữ liệu
Các mô hình máy tính truy xuất song song ngẫu
nhiên (PRAM – Parallel Random-Access Machine)
Độc giả có thể tìm hiểu kỹ hơn về các loại máy tính
truy xuất ngẫu nhiên (RAM – Ramdom-Access Machine), máy tính truy xuất song song ngẫu nhiên (PRAM – Parallel Ramdom-Access Machine), và các dạng khác nhau của máy tính PRAM tại [… Kai Hwang]
Trang 23 Siêu máy tính SIMD
Mô hình PRAM với bộ nhớ chia sẻ được thể hiện ở
Hình I.16 Tất cả n bộ xử lý hoạt động theo phương thức các
bước tìm kiếm khi truy xuất bộ nhớ trong quá trình thực thi chương trình Chúng có thể truy xuất một vị trí nhớ bất kỳ tại cùng một thời điểm
Scalar Instructions
Control Vector Instructions
Vector Data Scalar
Data
Vector Processor
Scalar Processor
Các đường ống
Đơn vị điều khiển vector
Tập Tha
nh Ghi
Đơn vị điều khiển vector
Tập thanh ghi vector
Đường ống chức năng vector
Đường ống chức năng vector
I/O User
Hình I.14 Kiến trúc siêu máy tính vector
Trang 24Hình I.15 Mô hình hoạt động của siêu máy tính SIMD
Hình I.16 Mô hình máy tính PRAM
Trang 25Một hệ thống PRAM n bộ xử lý có bộ nhớ được địa chỉ
hóa một cách toàn cục Bộ nhớ chia sẻ có thể phân bổ cho
các bộ xử lý hoặc tập trung Tất cả n bộ xử lý (cũng còn gọi
là n phần tử xử lý) hoạt động ghi đọc theo phương thức
đồng bộ Với bộ nhớ chia sẻ, hệ thống luôn phải xác định có thao tác đọc ghi nào xẩy ra đồng thời hay không Có 4 tùy chọn Ghi/đọc:
Exclusive Read (ER – Đọc riêng) Cho phép nhiều nhất là bộ xử lý đọc bất kỳ ô nhớ nào trong 1 chu
kỳ
Exclusive Write (EW – Ghi riêng) Cho phép nhiều nhất là bộ xử lý ghi vào bất kỳ ô nhớ nào trong 1 chu kỳ
Concurrent Read (CR – Đọc đồng thời) Cho phép nhiều bộ xử lý đồng thời đọc dữ liệu tại một ô nhớ trong cùng 1 chu kỳ
Concurrent Write (CW – Ghi đồng thời) Cho phép ghi đuổi vào một ô nhớ Để tránh rối loạn, cần có 1 chiến lược giải quyết tranh chấp
Mô hình VLSI hoàn chỉnh
Các mô hình lý thuyết của máy tính song song thường
sử dụng theo đề xuất của thuật giải và đề xuất phát triển của chíp hoặc mạch tích hợp cực lớn Thông thường những mô hình này sử dụng các giải thuật song song để thiết kế hệ thống mà không quan tâm đến cấu trúc vật lý cụ thể của thiết bị Mô hình được ứng dụng để đảm bảo việc thực hiện
ý tưởng một máy tính xử lý song song nhờ sự hoàn chỉnh của các mạch tích hợp cực lớn và thời gian thực hiện chứ
Trang 26không quan tâm đến việc chíp được tạo ra như thế nào Dung lượng nhớ và thời gian truy cập phụ thuộc vào yêu cầu của giải thuật Thời gian truy cập phụ thuộc vào độ phức tạp của vấn đề cần xử lý
Máy tính xử lý song song hiện thực hóa được nhờ sử dụng các chip VLSI tạo nên các phần tử chính như mảng các bộ xử lý, mảng bộ nhớ và các mạng chuyển mạch Công nghệ cao trong nền công nghiệp vi điện tử cho phép thiết kế các máy tính song song nhờ:
Có thêm nhiều không gian trống để tăng thêm các khối chức năng như MMU, FPU, điều khiển Vào/Ra, và dung lượng cache trong chip
Tăng số lượng thanh ghi trong tệp thanh ghi, tạo khả năng thực hiện được nhiều loại chương trình với thời gian truy xuất bộ nhớ tối thiểu
Sử dụng tiến bộ vượt bậc của công nghệ Vi điện tử
Main
Loadl store Unit
FP Add Unit
Integer ALU
Branch Unit
Load/store FP Add FP multiply Branch Integer ALU
Hình I.17 Mô hình máy tính VLIW và cú pháp lệnh VLIW
Cú pháp một lệnh của hệ thống VLIW
Trang 27Chương II
Kỹ thuật đường ống và siêu hướng
Chương này khảo sát về kỹ thuật đường ống
(Pipelining Technique) và kỹ thuật siêu hướng (Superscalar Technique), về tổ chức đường ống lệnh (Instruction Pipeline), đường ống số học (Arithmetic Pipeline) và đường ống truy xuất bộ nhớ (Memory-access Pipeline)
II.1 Đa xử lý đường ống tuyến tính
Bộ xử lý đường ống tuyến tính (linear pipeline processor) là sự ghép nối các tầng xử lý (processing stage)
liên kết tuyến tính để thực hiện một chức năng cố định trên chuỗi dữ liệu từ khởi đầu đến kết thúc Trong các máy tính hiện đại, đường ống tuyến tính được ứng dụng vào các chức năng thực hiện lệnh, tính toán số học và thao tác truy xuất
bộ nhớ
Giả thiết rằng xử lý đường ống tuyến tính có k tầng xử
lý Dữ liệu từ ngoài được nạp vào đường ống tại tầng thứ
nhất S 1 Kết quả xử lý thu được phải trải qua các tầng S i, đến
tầng S i+1 với i = 1, 2, …, k-1.Kết quả cuối cùng thu được là
lối ra của tầng cuối cùng S k Dựa vào phương thức điều
khiển dòng dữ liệu trong đường ống có thể chia đường ống
tuyến tính ra 2 loại: dị bộ (asynchronous) và đồng bộ (synchronous)
a) Mô hình máy tính đường ống dị bộ
Trong loại mô hình này, dòng dữ liệu giữa các tầng liên tiếp trong một đường ống dị bộ được tiến hành thông qua
phương thức bắt tay (handshaking protocol), nghĩa là khi nào tầng S i sẵn sàng truyền, S i gửi tín hiệu sẵn sàng (ready)
Trang 28cho tầng S i+1 Sau khi tầng S i+1 nhận xong dữ liệu từ S i thì
S i+1 gửi tín hiệu nhận biết (acknowledge) cho tầng S i
Đường ống dị bộ rất thích hợp cho thiết kế các kênh truyền thông trong các hệ thống đa máy tính liên kết bằng thông điệp Nó có thể có vận tốc truyền khác nhau
Các đường ống động (dynamic pipeline) cho phép tái
cấu hình kết nối để thực hiện nhiều chức năng khác nhau tại những thời điểm khác nhau Các đường ống tuyến tính
truyền thống đều là những đường ống tĩnh (static pipeline)
và vì vậy chúng chỉ thực hiện một chức năng cố định
Đường ống động cho phép dùng cách liên kết ngược hoặc xuôi cùng các chuỗi liên kết Cũng vì lý do này, có tác giả cho rằng các đường ống loại này là đường ống phi tuyến
b) Mô hình máy tính đường ống đồng bộ
R eady A
ck
Ack Ready Ready
Data
Hình II.1 Mô hình đường ống dị bộ
Thời gian (Xung nhịp)
Hình II 2 Mô hình hệ thống máy tính đường ống đồng bộ
Trang 30bởi xung nhịp được sử dụng làm giao tiếp giữa các tầng Khi xung nhịp xuất hiện các mạch chốt đồng thời truyền dữ liệu đã được xử lý cho tầng tiếp theo Các tầng là những mạch logic tổ hợp và cần phải có độ trễ xấp xỉ nhau Độ trễ này quyết định tốc độ xử lý của đường ống
Việc sử dụng các tầng nối tiếp nhau trong hệ thống
đường ống tuyến tính được xác định bởi bảng dự phòng (Reservation Table) Bảng dự phòng là biểu đồ thời gian- không gian (space-time diagram) chỉ rõ mối quan hệ được
sử dụng trong tầng Với hệ thống đường ống k tầng, cẩn phải có k xung nhịp để 1 thao tác đường ống được hoàn
thiện Mỗi thao tác đường ống được khởi động bởi 1 xung nhịp để bắt đầu Cho đến kết thúc thao tác trên đường ống, kết quả được chuyển cho đường ống khác xử lý tiếp Sự
“xuyên suốt” (throughput) một đường ống chỉ được coi là
hoàn thiện khi các thao tác đường ống độc lập với nhau Mức đường ống tinh nhất được gọi là mức vi đường
ống (Micropipelining) với cách phân chia tầng theo mức cổng logic Trong thực tế, mỗi tầng chỉ có từ 2 ≤ k ≤ 15
cổng Trong thực tế, ở các máy tính hiện nay, rất ít các đường ống vượt quá 10 mức cổng logic Mức tiếp theo của
đường ống là mức đường ống Macro (Macropipelining)
Lựa chọn tối ưu cho số tầng ở mức đường ống này phụ thuộc vào giá thành trên 1 sản phẩm hoàn chỉnh Để đánh giá chỉ tiêu này thì Larson đã đưa ra biểu thức tính PCR
(Performance/Cost Ratio) [ Xem … ]
Bảng dự phòng của đường ống tuyến tính tĩnh chỉ ra
dòng chuyển của chuỗi dữ liệu trong đường ống Bảng này đặc biệt đáng khảo sát trong hệ thống đường ống động, vì
Trang 31với một loại đường ống, có thể tạo ra nhiều bảng khác nhau nhằm thực hiện những chức năng xử lý khác nhau Mỗi bảng chỉ ra một dòng chuyển theo thời gian và không gian
(time-space flow) của chuỗi dữ liệu trong đường ống Số lượng cột chỉ ra thời gian xử lý (evalution time) của chức
năng cần thiết Trong ví dụ đã nêu trên, chức năng X cần 8 xung nhịp, trong khi chức năng Y chỉ cần 6 xung nhịp Bảng thiết lập đường ống phụ thược vào từng nhiệm vụ cần xử lý Thiết lập cho đường ống tĩnh luôn sử dụng duy nhất bảng
dự phòng cố định Đường ống động có thể cho phép sử dụng những thiết lập khác nhau để đáp ứng những bảng dự phòng khác nhau Những đánh dấu X trong bảng dự phòng ứng với thời điểm (chu kỳ) mà tầng được sử dụng
đường ống siêu hướng
Trong các bộ xử lý siêu hướng, đơn vị giải mã và đơn
vị thực hiện lệnh được mở rộng để tạo ra m thao tác đường
ống đồng thời Một số tầng trong đường ống có thể được chia sẻ bởi các đường ống khác Trên hình II.3 là cấu trúc đa đường ống với nguồn tài nguyên chia sẻ Hai lệnh đồng thời
có thể được đưa tới trong 1 chu kỳ, với điều kiện là không tranh chấp tài nguyên và không có hiện tượng dữ liệu phụ
thuộc lẫn hau Mỗi đường ống đều có 4 tầng gồm nhận lệnh, giải mã, thực hiện và ghi kết quả Cả hai lệnh đều được lấy
từ ICACHE Giả thiết rằng mỗi tầng đều chỉ cần một chu kỳ
xung nhịp, ngoại trừ tầng thực hiện có thể cần số lượng
xung nhịp khác nhau Có 4 đơn vị chức năng trong tầng này
gồm bộ nhân, bộ cộng, bộ logic và bộ nạp và đều có thể sử
dụng trong tầng thực hiện Bộ nhân có đường ống 3 tầng, bộ cộng là 2 tầng , còn lại là chỉ có một tầng Hai đơn vị nhớ S1
Hình II.3 Bộ xử lý siêu hướng 2 đường ống với 4 đơn vị chức
Trang 32và S2 có thể được sử dụng linh hoạt bởi 2 đường ống, phụ thuộc vào khả năng của chúng theo các chu kỳ riêng biệt
Đáng chú ý ở đâu là đơn vị cửa sổ giám sát (lookahed window) với đơn vị nhận lệnh và giải mã lệnh riêng Cửa sổ
này rất cần thiết cho việc giám sát thực hiện các lệnh trong trường hợp chuỗi lệnh xuất hiện, nhằm đảm bảo việc thực hiện chúng trong các đường ống được hiệu suất hơn Rất khó để phân chia đồng thời các đường ống trong hệ thống
đa đường ống, nhất là khi các lệnh cùng được lấy từ cùng một nguồn Có thể hiểu rõ hơn khái niệm này qua hình II.4
Hình II.3 Hệ thống siêu hướng 2 đường ống với 4 đơn vị
chức năng tại các tầng thực thi vá cửa sổ giám sát tạo thứ tự
xuất kết quả
Trang 33Cycle 7 Cycle 6
Cycle 5 Cycle 4
Cycle 3 Cycle 2
Reg
file
Reg file ALU
Reg file
Reg file ALU
Reg file
Reg file ALU
Reg file
Reg file ALU
Reg file
Reg file ALU
Instr cache
Instr cache
Data cache
Data cache
Data cache
Data cache
Data cache
Trang 341 2 3 4 5 6 7 8 9 Pipe1, I1 f1 d1 e2 s1
Time (Clock Cycle)
Hình II.4a Biểu đồ thời gian trong trường hợp lệnh xuất theo thứ
tự và được thực hiện hoàn thành theo thứ tự trong 9 chu kỳ
Hình II.4b Biểu đồ thời gian trong trường hợp lệnh xuất hiện
theo thứ tự và được thực hiện hoàn thành không theo thứ tự trong 9
chu kỳ
và thứ tự hoàn thiện thực thi lệnh
Trang 35Gọi k là thời gian cần thiết để thực hiện m lệnh đồng thời đầu tiên trong m đường ống, N là số lệnh, ta có:
Thời gian hực hiện trên máy scalar cơ bản (1 đường ống) là:
T(1,1) = k + N-1 (chu kỳ cơ bản)
Với trường hợp m đường ống ta có
m
m N k m
Trang 36Tăng tốc lý tưởng của máy siêu hướng sẽ là
) 1 (
) 1 (
1
1 )
1 , (
) 1 , 1 ( )
k N m k
m N
k N m
T
T m
S
Thấy rằng nếu N→∞, giới hạn tăng tốc S(m,1) →m Với hệ thống siêu đường ống bậc n với k tầng, thời gian tối tiểu để thực hiện N lệnh trên đường ống là:
) 1 (
1 )
,
1
n k n
Và khả năng tăng tốc của máy siêu đường ống sẽ là
1
) 1 (
1
1 )
,
1
(
) 1
N k n n
N k
N k n
F: Fetch D: Decode E: Execution WB: Write Back
Hình II.5a và II.5b mô tả việc thực hiện các lệnh trong
hệ thống siêu đường ống bậc n = 3 và hệ thống hỗn hợp siêu đường ống-siêu hướng bậc (m,n) =(3,3).
Hình II.5a Thực hiện đường ống bậc n = 3
W
Xung nhịp
Trang 37Dễ dàng thấy rằng hệ thống siêu đường ống-siêu hướng
thực hiện m lệnh trong 1 chu kỳ cơ bản, và với tổ chức siêu
hướng, tốc độ được tăng lên đáng kể Tổ chức của máy DEC
Alpha có m = 2 và n = 4 cho các thao tác số nguyên, số dấu
phẩy động, ghi/đọc và rẽ nhánh
Với hệ thống siêu đường ống-siêu hướng bậc (m,n) với
k tầng, thời gian tối tiểu để thực hiện N lệnh là:
) (
1 )
,
mn k n
N k mn mn
m N k
N k n m T
T n S
) 1 , 1 ( ) , 1 (
Và với N→∞ thì S(m,n) →mn
II.3 Hệ thống BUS và bộ nhớ
Các bộ Vi xử lý, bộ nhớ và các thiết bị ngoại vi được kết nối cứng nhờ một hệ thống BUS Yêu cầu khe khắt đối với BUS hệ thống là đảm bảo truyền thông giữa các thành phần trong hệ thống không bị nhiễu và tín hiệu không bị suy giảm Phương thức định thời phải phù hợp với mọi yêu cầu
W
Hình II.5b
Thực hiện lệnh trong
hệ thống siêu đường ống-siêu hướng với m
= n = 3
Xung nhịp
Trang 38trao đổi thông tin Nguyên tắc hoạt động phải đảm bảo việc chuyển giao thông tin dữ liệu đúng yêu cầu trên BUS
Các đường dây dẫn tín hiệu trên bo mạch thường được gộp thành các kênh truyền dẫn theo chức năng
Slot k Slot k-1
Điều khiển BUS Memory Board
CPU Board
BUS các tín hiệu ngắt và tín hiệu đồng bộ DTB Arbitration BUS (Phân xử sử dụng BUS) Data Transfer BUS (DTB) Dữ liệu, Địa chỉ và các tín hiệu điều khiển
Logic giao diện
Tạo xung nhịp, tạo chuỗi t/h điều khiển, nguồn nuôi …
Logic giao diện
Các mô đun xử
lý, các
mô đun nhớ và thiết bị Vào/Ra khác
Trang 39Data Transfer BUS (DTB) được tạo bởi các đường
dây truyền dẫn dữ liệu, địa chỉ và các tín hiệu điều khiển Các đường dây địa chỉ truyền dẫn tín hiệu đại diện cho địa chỉ của dữ liệu và các thiết bị và số lượng đường dây tỷ lệ thuận với không gian địa chỉ Số lượng đường dây tín hiệu
dữ liệu tỷ lệ thuận với độ dài từ nhớ
BUS arbitration and control (Điều khiển và trọng tài
BUS): Quá trình gán điều khiển DTB cho các yêu cầu sử
dụng BUS được gọi là trọng tài BUS Một số đường dây
được giành cho quá trình phân xử BUS cùng với một số yêu
cầu sử dụng BUS Bên yêu cầu sử dụng được gọi là chủ (master), đầu nhận cuối được gọi là tớ (slave)
Các đường dây yêu cầu ngắt dùng để thu hận các ngắt
và thông thường được gán các mức ưu tiên
Các mô đun chức năng bao gồm các mạch điện tử
được lắp ráp trên các vỉ chức năng Một số mô đun cụ thể là:
dụng BUS, phân xử và gán điều khiển DTB cho mô đun có yêu cầu
thiết cho một thao tác truyền thông tin trên DTB và kết thúc chu kỳ DTB nếu thao tác đó kéo dài quá mức thời gian cho phép
ngắt và cung cấp thông tin về trạng thái/số hiệu ngắt khi interrupt handler cần
năng giám sát việc truyền dữ liệu trên DTB Giám
Trang 40sát nguồn (Power Monitor) theo dõi trạng thái ổn
định của nguồn và các tín hiệu
là mô đun cấp tín hiệu xung nhịp định thời
Logic giao tiếp trên bo mạch (Board Interface Logic) là thành phần chức năng phối ghép công
nghệ, phối ghép logic giữa bo mạch với các vỉ chức năng
3 Đưa địa chỉ/dữ liệu lên BUS
4 Chọn Slave khi các tín hiệu đã ổn định
5 Truyền các tín hiệu dữ liệu
6 Nhận dữ liệu đã ổn định
7 Thông báo đã nhận dữ liệu
8 Nhận thông báo đã nhận dữ
liệu, rút dữ liệu khỏi BUS
9 Ghi nhận dữ liệu đã rút ra khỏi BUS
10 Gửi tín hiệu hoàn thành chuyển dữ liệu và ưu tiên BUS
11 Gửi yêu cầu sử dụng BUS
mới
Có 2 giao thức định thời cho thao tác chuyển giao dữ
liệu giữa chủ và tớ, định thời đồng bộ và định thời dị bộ
BUS
Hình II.7 Định thời cơ bản cho thao tác truyền thông tin trên BUS giữa Chủ (Master) và Tớ (Slave)