Tải bản đầy đủ (.docx) (30 trang)

Phân tích cấu trúc và nguyên lý làm việc của bộ VXL AMD 64 bit

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (829.21 KB, 30 trang )

Trường Đại Học Công Nghiệp Hà Nội
Khoa : công nghệ thông tin

Bài tiểu luận môn học: KTMT

Đề tài : Phân tích kiến trúc và nguyên lý làm việc của bộ VXL
64 bit của AMD

Giáo viên : Ths Nguyễn Tuấn Tú
Nhóm số : ...
Lớp : 2020 - K14

Hà Nội, 2020


Trường Đại Học Công Nghiệp Hà Nội
Khoa : công nghệ thông tin

Bài tiểu luận môn học: KTMT

Đề tài : Phân tích kiến trúc và nguyên lý làm việc của bộ VXL
64 bit của AMD
Giáo viên : Ths Nguyễn Tuấn Tú
Sinh viên thực hiện:
1.
2.
3.
4.
5.
Lớp : 2020 – K14


Hà Nội, 2020


MỤC LỤC

LỜI NÓI ĐẦU

Vào ngày 1 tháng 6 năm 2006, AMD chính thức tung ra thị
trường thế hệ CPU K8 sử dụng socket AM2 (socket AM2 có 940 chân).
Thế hệ CPU K8 này hỗ trợ RAM DDR2 và có thêm 1 số tính năng,
cơng nghệ mới như cơng nghệ máy tính ảo AMD Virtualization . Đặc
biệt thế hệ CPU K8 dùng socket AM2 cịn có dịng EE (Energy
Efficient) với cơng suất tiêu thụ thấp hơn đáng kể. Cốt lõi K8 là rất
tương tự như các K7. Sự thay đổi cơ bản nhất là sự tích hợp các hướng
dẫn AMD64 và một bộ điều khiển bộ nhớ on-chip. Bộ điều khiển bộ
nhớ đáng kể làm giảm độ trễ bộ nhớ và chịu trách nhiệm đối với hầu hết
tăng hiệu suất từ K7 lên K8.
Dưới đây là một số tìm hiểu cơ bản về kiến trúc, nguyên lí làm
việc của bộ vi xử lí AMD K8. Do thời gian chuẩn bị khơng nhiều và với
kiến thức còn hạn chế của bản thân nên sẽ khơng tránh khỏi những
thiếu sót. Mong thầy cùng tham gia góp ý xây dựng thêm để thơng tin
hệ thống của bộ vi xử lí được hồn thiện hơn !


Chương 1: Kiến trúc AMD 64bit
1.1. Giới thiệu
Trong phần này chúng ta sẽ xem qua cấu trúc
bên trong của bộ vi xử lí AMD64 được sử dụng
trong Athlon 64, Athlon 64 X2, Athlon 64 FX,
Opteron, Turion 64 và một vài kiểu Sempron

Cấu trúc này có tên gọi như K8 hoặc Hammer ,
chúng ta sau khi xem cấu trúc bên trong của nó và so
sánh với cấu trúc bên trong của bộ vi xử lí Intel .
Sự khác nhau chính giữa cấu trúc AMD64 và những
bộ vi xử lí được thiết kế trước đó của AMD như
AthlonXP và Athlon đầu tiên ở chỗ phần điều khiển bộ nhớ được đi kèm bên
trong CPU mà khơng thơng qua Chip North Bridge
Hình 1: ảnh minh họa
( Chip chính của Chipset trên Mainboard ) . Do đó
AMD 64 bit
Mainboard được sản xuất cho bộ vi xử lí dựa trên cấu
trúc AMD64 thì Chip “North Bridge” là cầu nối giữa
CPU và Bus đồ hoạ (AGP hoặc PCI Express) và Chip "South Bridge" . Từ
khi Chip “North Bridge” được sản xuất đơn giản hơn thì một vài nhà sản xuất
chỉ còn một Chipset trên Mainboard cho kiểu CPU của AMD64.
Từ khi phần điều khiển bộ nhớ được đi kèm bên trong CPU , dung lượng của
bộ nhớ - bao gồm kiểu bộ nhớ được hỗ trợ và hỗ trợ Dual Channel - phụ
thuộc vào CPU mà khơng cịn phụ thuộc vào North Bride ( khơng cịn phụ
thuộc vào Mainboard ) như đã từng xảy ra với những Mainboard sử dụng
CPU có cấu trúc khác . Như vậy đối với Mainboard dùng CPU dựa trên cấu
trúc AMD64 mà khơng tích hợp Video on-board thì khơng có những tính
năng khác của Mainboard được quan tâm đến . đối với những Mainboard
dùng CPU dựa trên cấu trúc AMD64 có tích hợp Card màn hình on-board thì
chỉ có tính năng của phần Card màn hình là được quan tâm đến .


Hình 2: Cấu trúc được dùng dựa trên CPU
khác



Hình 3: cấu trúc được dùng dựa trên bộ vi xử lí AMD64

Chúng ta có thể nói rằng Chip "North Bridge" được gắn bên trong CPU .
Trên Mainboard chúng ta sẽ tìm thấy Chip " Bridge" mà sẽ phù hợp giao diện
giữa Bus "HyperTransport" ( có nghĩa là CPU ) với Bus của card đồ
hoạ (AGP hoặc PCI Express x16) và Chip "South Bridge" . Đôi khi nhà sản
xuất Mainboard họ đưa ra một Chip duy nhất gọi là “Single-chip Solution”
bao gồm Chip " Bridge" và Chip "South Bridge" .
Phần điều khiển bộ nhớ được đi kèm bên trong bộ vi xử lí AMD64 có thể
điều khiển tới 04 thanh nhớ / kênh . Do vậy hệ thống Dual - Channel có thể
điều khiển 08 thanh nhớ . Số của khe cắm được có sẵn trên Mainboard là giới
hạn bởi nhà sản xuất Mainboard .


1.2. Bus HyperTransport và Đa xử lí
Sự trao đổi thơng tin giữa CPU AMD64 và Chip " Bridge" được thực
hiện bởi Bus có tên là HyperTransport . Tốc độ HyperTransport phụ thuộc
vào kiểu của CPU . Giá trị thông thường là 3200MB/s hoặc 4000MB/s . Để
hiểu kỹ hơn về HyperTransport bạn có thể xem riêng bài này trong trang Web
của chúng tơi .
Bộ vi xử lí AMD64 có thế có nhiều hơn một bus HyperTransport . Trong khi
tất cả CPU AMD64 của thị trường máy tính để bàn và máy tính xách
tay Athlon 64, Athlon 64 FX, Athlon 64 X2, Sempron và Turion 64 chỉ có 01
bus HyperTransport , thì kiểu CPU dùng AMD64 cho náy chủ và máy trạm
làm việc - Opteron - có nhiềuhơn 01 bus HyperTransport .
Bộ vi xử lí Opteron có series 1xx khơng hỗ trợ Đa xử lí và chỉ có 01 bus
HyperTransport như hình trên ( ở phần 1) .
CPU Opteron 2xx hỗ trợ đa xử lí tới 02 CPU và có 02 Bus HyperTransport .
CPU Opteron 8xx hỗ trợ đa xử lí tới 08 CPU có 03 Bus HyperTransport .
Những Bus thêm vào để dùng kết nối bên trong những CPU với nhau , chúng

ta có thể xem hình dưới đây .

Hình 4: Cấu hình Opteron 2xx hoặc 8xx có Dual-CPU
và Đa xử lí


Hình 5: Cấu hình Đa xử lí Opteron 8xx có 04 CPU


Hình 6 : Cấu hình đa xử lí Opteron 8xx có 08 CPU

Quan điểm của AMD về vấn đề Đa xử lí cũng rất được đáng quan tâm .
Mỗi một CPU có phần điều khiển bộ nhớ của nó , mỗi CPU truy cập vào
những thanh nhớ riêng biệt .


Ví dụ : trong hệ thống 04 Opterron có 4GB bộ nhớ thì mỗi một CPU có điều
khiển riêng 1GB nhớ . Trong hệ thống Opteron có 04 CPU 4GB được chia
cho tất cả CPU . Như thế mỗi một CPU có thể điều khiển tới 04 thanh nhớ /
kênh và 04 CPU có thể điều khiển trực tiếp tới 32 thanh nhớ ( 08 thanh / CPU
) . Nhà sản xuất Mainboard thiết kế số khe cắm RAM sẵn sàng trên
Mainboard ( có nghĩa là có thể nói rằng hệ thống Opteron 04 CPU có thể có
tới 32 thanh nhớ mà khơng thể nói rằng tất cả hệ thống Opteron 04 PCU có
32 khe cắm RAM ).
Trong hình trên chúng ta có thể thấy phần "I/O " . I/O này đại diện cho mỗi
kiểu của Bridge , thông thường là South Bridge , nó có thể là Bridge của Card
đồ hoạ AGP hoặc PCI Express x16 , nó cũng có thể là PCI-X hoặc PCI
Express cho mục đích Card Add-on ....

Hình 7 : Bus HyperTransport được kết nối bên trong CPU



Bộ vi xử lí AMD64 có "Crossbar" , ở đó là đường nạp dữ liệu và những lệnh
từ và tới CPU , bộ nhớ và với Bus HyperTransport .
System Request Interface (SRI) cũng được gọi là System Request Queue
(SRQ), trong khi APIC là Advanced Programmable Interrupt Controller .

1.3. Socket của CPU
CPU AMD64 có vài kiểu Socket khác nhau . Chúng ta phải dùng
Mainboard có cùng kiểu Socket với CPU mà chúng ta có .
Những kiểu Socket khác nhau bởi vì những tính năng khác nhau của phần
điều khiển bộ nhớ .


Socket 754 : phần điều khiển bộ nhớ DDR và Single - Channel , có
nghĩa là điều khiển bộ nhớ truy cập bộ nhớ 64-bit . được sử dụng đầu
tiên cho kiểu Athlon64 , Turion64 và kiểu Sempron socket 754.



Socket 939 : điều khiển bộ nhớ DDR và Dual - Channel , điều khiển bộ
nhớ truy cập 128-bit . được sử dụng kiểu Athlon 64, Athlon 64 X2,
Athlon 64 FX và một vài dịng Opteron 1xx.



Socket 940 : điều khiển bộ nhớ DDR và Dual - Channel yêu cầu bộ
nhớ ECC . được dùng trong Opteron và những kiểu đầu tiên của
Athlon 64 FX.




Socket AM2 : điều khiển bộ nhớ DDR2 và Dual - Channel . Được
dùng cho những sản phẩm sắp tới của Athlon 64, Athlon 64 X2 và
Athlon 64 FX .

Hình dưới đây là Socket của CPU và trên Mainboard


Hình 8 : Socket 754

Hình 9 : Socket 939

1.4. Những đặc điểm chính AMD64
Từ khi phát hành Athlon64 , cấu trúc AMD64 đem lại nhiều kiểu 64-bit
cho những lệnh của x86 .
Kiểu này gọi là x86-64 của AMD và nó làm để mở rộng những thanh ghi có
sẵn 32-bit thành những thanh ghi 64-bit .
Tất cả bộ vi xử lí AMD64 có 16 thanh ghi 64-bit khi chạy kiểu x86-64 .
Trong kiểu này bộ vi xử lí có bus địa chỉ được mở rộng từ 32-bit lên 40-bit ,
nó cho phép CPU có thể truy cập tới 1TB RAM ( 2^40 ) . Cũng trong kiểu
này CPU có thể truy cập tới 256TB của bộ nhớ ảo ( 2^48 ) . Bộ nhớ ảo là
công nghệ mà cho phép CPU mơ phịng nhiều bộ nhớ RAM bằng cách tạo
thành những file nháp trên ổ cúng gọi là Swap file .


Intel đã Copy tất cả những đặc điểm trên và họ khơng ngoại trừ bất kì đặc
điểm nào của AMD . Mặc dù vậy những CPU AMD64 mà hỗ trợ kiểu x86-64
thì khơng phải tất cả bộ vi xử lí của Intel đều hỗ trợ đặc điểm đó . Để sử dụng
đặc điểm này thì hệ điều hành phải chạy 64-bit .

Như chúng ta đã biết phần điều khiển nhớ của AMD64 làm việc trên công
nghệ DDR hoặc DDR2 . Công nghệ Dual Data Rate làm việc bằng cáhc
truyền 02 dữ liệu trong một chu kì đồng hồ . Do đó khi dùng Athlon64 có bộ
nhớ DDR400/PC3200 , CPU truy cập với tần số xung nhịp đồng hồ 200MHz
chứ không phải 400 MHz ( bộ nhớ DDR và DDR2 có tốc độ thực bằng 1/2
tốc độ ghi trên nhãn ) .
Tất cả CPU AMD64 có bộ nhớ Cache lệnh là 64KB và Cache dữ liệu là
64KB . Bộ nhớ cache L2 thì phụ thuộc vào kiểu của CPU . Trong bộ vi xử lí
Dual-core thì cache L2 được tách rời có nghĩa là mỗi nhân sở hữu bộ nhớ
cache L2 riêng biệt . Trong CPU của Intel dòng mới nhất ( Core Duo và Core
2 Duo ) bọ nhớ cache L2 được dùng chung và được chia xẻ tuỳ theo nhu cầu
của mỗi nhân ( Intel tuyên bố đó là cải tiến để tăng hiệu suất làm việc ) .

1.5. Pipeline AMD64
Pipeline là danh sách của tất cả các tầng mà một lệnh phải đi qua một
cách thứ tự để thực hiện một cơng việc được hồn thành .
Cấu trúc AMD 64 dùng 12 tầng Pipeline đối với những lệnh thực hiện số
nguyên và 17 tầng Pipeline đối với những phép tính thực hiện dấu phảy
động . Dó đó nó sẽ cần 12 hoặc 17 bước để một lệnh đưa ra được thực hiện
hoàn thành trong AMD64 .
Cấu trúc trước của AMD - K7 , được sử dụng Athlon , Athlon XP và một vài
kiểu Sempron , có 10 tầng Pipeline . Pentium 4 có 20 tầng , Pentium
4 “Prescott” có 31 tầng . Intel quay trở lại những bộ vi xử lí sau này Core 2
Duo có 14 tầng Pipeline .
Chúng ta hãy nghiên cứu Pipeline số nguyên của AMD64 . Nó dựa trên
Pipeline của cấu trúc K7 , sự khác nhau chính ở tầng Decoder ( giải mã ) mà
nó sẽ phân thành vài tầng khác , chắc chắn cho phép những CPU AMD64 đạt
được tốc độ đồng hồ cao hơn .



Hình 10 : Pipeline số ngun của AMD64



Fetch : những lệnh được đưa tới từ bộ nhớ cache lệnh L1 thành những
nhóm 16 byte ( 128 bit ) . Trong phần này thành 02 tầng . Tầng thứ hai
được biết như là “Transit” - Sự đi qua , nó là hoạt đơng jchính để
chuyển dữ liệu bên trong CPU ( tương tự như tầng Drive của Pentium
4)



Pick : Fetch Unit gửi 128-bit mà đã được chuyển tới tầng này , cung
cấp tới một bộ đệm được sẵn sàng ở đây . Những lệnh x86 khơng có độ
dài cố định , trong tầng này CPU sẽ tìm và tách những lệnh hiện có bên
trong bộ đệm . Nó cũng quyết định những lệnh x86 sẽ được gửi tới
phần Decoder nào : tới Decode đơn giản ( nhanh ) được dùng những


lệnh x86 chung mà chuyển đổi thành một hoặc hai vi lệnh , hoặc tới
Decoder phức tạp ( chậm ) được dùng cho những lệnh x86 mà được
chuyển đổithành vài vi lệnh . Tầng này được biết như là "Scan "


Decode : ở đây những lệnh x86 được chuyểnthành những vi lệnh là
nhân CPU có thể hiểu được . Trong phần này có 02 tầng.



Pack : những cặp vi lệnh đã được giải mã được ghép thành một vi lệnh

ở đây .



Pack/Decode : một vài giải mã được làm ở đây trước khi vi lệnh được
gửi tới Instruction Control Unit của AMD64 ( tương tự như
ROB Reorder Buffer của Intel ).



Dispatch : những vi lệnh được gửi tới Scheduler thích hợp trong tầng
này.



Schedule : những vi lệnh được lên danh sách để thực hiện một trong
những Scheduler của CPU .



AGU/ALU : những lệnh liên quan đến số nguyên và lên quan đến bộ
nhớ được thực hiện ở đây .



Data Cache : dú liệu được sinh ra trong Execution Unit được gửi tới bộ
nhớ Cache L1 , những thanh ghi đầu tiên sẽ lưu được lưu trữ và lệnh
được đánh dấu “executed” trong ROB . Phần này giống
như “Retirement” trong CPU của Intel .


1.6. Bộ nhớ Cache và Fetch Unit
Trong cấu trúc AMD64 đường dữ liệu kết nối giữa bộ nhớ Cache L1 và
L2 có độ rộng 128-bit . Trong bộ vi xử lí của Intel thuộc thế hệ thứ 7
( Pentium 4 ) đường dữ liệu này có độ rộng 256-bit và trong CPU của Intel
thuộc thế hệ thứ 6 (Pentium Pro, Pentium II, Pentium III ) đường này rộng
64-bit .


Hình 11: Trong bộ vi xử lí của Intel thuộc thế hệ thứ

7 ( Pentium 4 )
Bộ nhớ cache lệnh L1 của CPU AMD64 bao gồm mạch logic Pre-decode ,
mỗi một byte lưu trữ bên trong bộ nhớ cache L1 có một vài bit để đánh dấu
bắt đầu và kết thúc mỗi lệnh . Những lệnh x86 khơng có độ dài cố định
( chúng có thể có từ 1 đến 15 byte ) , q trình xử lí để tách đâu là điểm đầu
và đâu là điểm cuối là rất quan trong để CPU giải mã ( Decoder ) .
Cache lệnh L1 cung cấp 76 bit phụ tới Fetch Unit trong đó : 52 bit là Predecode , 08 bit chẵn lẻ và 16 phần chọn rẽ nhánh . Những bit chọn rẽ nhánh
được CPU sử dụng để ccó gắng dự đốn trước những rẽ nhánh bên trong
chương trình .
Do đó trên thực tế Cache L1 có dung lượng lớn hơn 64KB như thơng báo vì
có thêm những thơng tin lưu trữ Pre-decode và thông tin rẽ nhánh .


Nó sẽ được tính là 102 KB gồm : 64KB cache lệnh + 4KB parity + 26 KB
Pre-decode + 8KB dữ liệu rẽ nhánh .
Cấu trúc AMD64 dùng 2048 đầu vào BTB (Branch Target Buffer) , có cng
kích thước với cấu trúc thế hệ trước CPU của AMD , K7 . BTB là bộ nhớ nhỏ
mà chứa danh sách tất cả những rẽ nhánh được nhận biết bên trong chương
trình.
BTB của Pentium 4 có 4096 đầu vào trong khi những bộ vi xử lí thuộc thế hệ

thứ 6 của Intel phần đệm này có 512 đầu vào.
Thanh ghi rẽ nhánh khác BHT (Branch History Table) , được AMD gọi
là GHBC (Global History Bimodal Counter) , có 16384 đầu vào trong cấu
trúc AMD64 , trong khi Pentium 4 của Intel có 4096 đầu vào , có cùng kích
thước với BHT của cấu trúc K7 của AMD . Thanh ghi này có 02-bit dùng để
theo vết những rẽ nhánh có điều kiện " có khả năng nhất " , "có khả năng" , "
khơng có khả năng" và "khơng có khả năng nhất " .

1.7. Decoder
Bộ vi xử lí của AMD dùng cấu trúc ghép lai CISC/RISC từ thế hệ thứ
5 ( có tên là K5 ) .
Intel bắt đầu dùng phương pháp này từ CPU thuộc thế hệ thứ 6 . CPU phải
chấp nhận lệnh CISC , hay được gọi là x86 , từ hầu hết các chương trình ngày
nay được sử dụng những lệnh này . Những bộ vi xử lí chỉ có RISC khơng
được thiết kế cho PC bởi vì nó khơng chạy được những chương trình thơng
thường như : Windows , OFFICE ....
Do đo giải pháp được tất cả bộ vi xử lí trên thị trường ngày nay của AMD và
Intel là dùng bộ giải mã ( Decoder ) . Bên trong CPU có những lệnh như là
RISC , những đằng trước của Decoder chỉ có những lệnh CISC .
Những lệnh x86 CISC được gọi là " lệnh " , những lệnh bên trong của RISC
gọi là "vi lệnh " hoặc : “micro-op”, “µops” , “ROP”.
Cấu trúc AMD64 có kiểu lệnh thứ ba gọi là Macro-op hoặc "MOP" , nó là
lệnh được tạo ra từ Giải mã lệnh . AMD64 thực hiện bên trong bằng những
Macro-op . Khi những Macro-op được đưa tới những Scheduler thích hợp ,
nó đẩy nhanh giải mã thành những vi lệnh và sau đó những vi lệnh này được
thực hiện .
Nếu chúng ta chú ý nhớ rằng một cái gì đó trong cấu trúc mới của Intel cũng
được sử dụng kiểu Macro-op trên chính là đặc điểm Macro-fusion ( ghép hai
vi lệnh thành một vi lệnh trong một thanh ghi có độ rộng gấp đôi ) . Những



bộ vi xử lí có sử dụng Macro-fusion chỉ làm việc với những lệnh rẽ nhánh ,
còn trong AMD64 dùng Macro-op được dùng trong tất cả các lệnh .
Những vi lệnh RISC không thể truy cập trực tiếp , do chúng ta không tạo ra
những phần mềm viết trên tập lệnh này , do đó những lệnh phải đi qua phần
Decoder . Mỗi một CPU có tập vi lệnh RISC riêng và khơng tương thích với
những vi lệnh từ CPU khác . Có nghĩa là vi lệnh của AMD65 khác với vi lệnh
của Pentium 4 , khác với cấu trúc vi lệnh của K7 .
Tuỳ thuộc vào độ phức tạp của lệnh x86 , nó có thể chuyển đổi thành một vài
vi lệnh RISC .
Trong cấu trúc AMD64 , những vi lệnh x86 có thể được chuyển đổi thành
những Macro-op được sử dụng trong 03 phần khác nhau :


Dùng Decoder đơn giản , gọi là DirectPath Single , mà chuyển một
lệnh x86 thành một lệnh Macro-op .



Cũng dùng Decoder đơn giản , gọi là DirectPath Double , chuyển đổi
01 lệnh x86 thành 02 Macro-op .



Hoặc dùng Decoder phức tạp , gọi là DirectPath Vector , chuyển 01
lệnh x86 thành vài lệnh Macro-op .

Ở đây Decoder của AMD64 làm việc như thế nào ?
Trong tầng Pick , hoặc gọi là Scan , CPU tìm kiếm và tách những lệnh hiện
thời trong Instruction Byte Buffer , quyết định phần nào sẽ được

dùng DirectPath hoặc VectorPath .
Sau đó đến tầng giải mã Decode , được phân thành 02 bước , ở đây những
lệnh x86 hiện tại được chuyển đổi thành những Macro-op . Tầng này tương
đương với tầng Aligh của CPU K7 . Tốc độ giải mã lớn nhất ở đầu ra là 06
Macro-op / chu kì đồng hồ : 03 macro-op cho DirectPath và 03 macro-op
cho VectorPath .
Những Macro-op đi tới tầng Pack ( tương đương với tầng Decode 1 của
K7 ) , ở đó những lệnh Macro-op được gói lại với nhau , 03 Macro-op được
gửi tới tầng tiếp theo - Pack/Decode - sau đó những Macro-op được gửi
tới Instruction Control Unit ( tương đương với Reorder Buffer (ROB) của
Intel .


Hình 12: Decoder của AMD64

1.8. Dispatch và Schedule
Như chúng ta đã đề cập Instruction Control Unit là ROB (Reorder
Buffer) của bộ vi xử lí AMD64 . Ở đó những Macro-op được "nhặt" và gửi
tới phần lên công việc OOO ( Out-Of-Order ) , có nghĩa là thực hiện cơng
việc khơng theo thứ tự lệnh xuất hiện trong chương trình . Ví dụ nếu chương
trình như sau :
Interger


Interger
Interger
Interger
FP
Interger
FP

Cấu trúc AMD64 có 03 Execution Unit thực hiện những phép tính liên quan
đến số ngun và cũng có 03 Execution Unit thực hiện những phép tính liên
quan đến dấu phảy động . Nếu nó khơng thực hiện OOO thì những phần liên
quan đến dấu phảy động sẽ nghỉ khi chạy chương trình này khi lệnh trước
cũng là lệnh liên quan đến số nguyên không thể thực hiện cùng một lúc bởi vì
cũng chỉ có 03 Execution Unit đang được sử dụng . Từ khi có sự cải tiến kiểu
thực hiện OOO , lệnh thứ năm cũng là lệnh dấu phảy động (FP) đầu tiên ,có
thể được gửi cùng thực hiện một lúc cùng với lệnh Interger đầu tiên , công
việc này tăng hiệu suất của CPU .
Trên thực tế trong AMD64 có 03 FPU nên cả hai lệnh FP đã có trong chương
trình trên sẽ được chuyển đi để thực hiện lệnh trong cùng một lúc . Mục đích
của nó là làm cho CPU ln ln hoạt động trong tất cả thời gian .
ROB ( Reorder Buffer ) có sẵn trong cấu trúc AMD64 , nó có 72 đầu vào và
một điều khá thú vị là mỗi một Execution Unit liên quan đến số ngun có
một vị trí cố định Scheduler trong đó ( 8 đầu vào / ALU ) . Những Execution
Unit của FP chỉ duy nhất một khối Scheduler và có 36 đầu vào . Do đó tổng
cộng trong AMD64 có 04 Scheduler , tương đương với Pentium 4.
ROB cũng cung cấp cho Register Renaming . Cấu trúc lệnh CISC x86 có 08
thanh ghi 32-bit (EAX, EBX, ECX, EDX, EBP, ESI, EDI và ESP) . Số này là
q ít , đặc biệt khi CPU thực hiện cơng việc kiểu OOO , nó sẽ phá huỷ nội
dung của các thanh ghi và làm hỏng chương trình .
Do đó ở tầng này bộ vi xử lí sẽ thay đổi tên và nội dung của những thanh ghi
được dùng trong chương trình thành một trong 96 thanh ghi , trogn khi
Pentium 4 có 128 thanh ghi . Thế hệ thứ 6 bộ vi xử lí của Intel (Pentium II ,
Pentium III) chỉ có 40 thanh ghi trong .
Một điều chú ý đó là một thủ thuật nhỏ trong cấu trúc AMD64 chỉ cần 96
thanh ghi trong . Chúng tạo một cách đơn giản là một trường kết quả trong
một hay 72 đầu vào của ROB để lưu trữ kết quả mỗi lệnh ( Pentium 4 khơng
có việc này ; Pentium 4 cần chỉ định một thanh ghi bên trong để lưu trữ kết



quả mỗi khi lệnh được thực hiện ) . Thêm vào đó File thanh ghi của nó
( hoặc IFFRF, Integer Future File and Register File, AMD gọi như vậy) có 40
đầu vào ( 16 trong số đó để lưu trữ giá trị “correct” cho mỗi thanh ghi x86 ,
chúng có thể không dùng ) . ==> 72 + 40 -16 = 96

Hình 12

1.9. Execution Unit
Cấu trúc AMD64 có 03 Execution Unit cho số nguyên ( hay còn gọi là
ALU - Arithmetic and Logic Unit, hoặc IEU - Integer Execution Unit) , 03
AGU (Address Generation Unit ) và 03 FPU (Floating-Point Unit) .
Nó có nhiềuhơn 01 ALU so với Pentium 4 . Tốc độ chuyển lệnh cao nhất là
06 lệnh / chu kì đồng hồ , cùng tốc độ với Pentium 4


Hình 13

Như hình trên chúng ta thấy , chỉ có những lệnh FP chỉ có thể được xử lí
trong FPU riêng biệt . FPAD cho những lệnh cộng dấu phảy động như lệnh
ADDPS ( trong tập lệnh SSE ) trong khi FMUL thực hiện những lệnh nhân
dấu phảy động như MULPS ( trong tập lệnh SSE )


Chương 2: Nguyên lý làm việc AMD 64 bit
2.1. Hoạt động của chíp điều khiển AMD
Chíp AMD sẽ tạo ra địa chỉ , các tín hiệu điều khiển đọc đọc/viết
ngoại vi , tính số từ đã chuyển và thơng báo khi chuyển xong mảng số
liệu cho vi xử lý. Ta có thể hình dung nh sơ đồ sau :


Hình 14:Các đờng liên hệ trực tiếp trong quá trình AMD

Hình 15: Sơ đồ nối AMD với bộ nhớ, thiết bị ngoại vi và vi xử lý


Khi hoạt động AMD , một ngoại vi ( ví dụ, bộ điều khiển ổ đĩa)
muốn gửi byte số liệu bằng phơng pháp này thì trớc hết nó phải gửi tín
hiệu theo yêu cầu AMD là DREQ tới một lối vào (gọi là một kênh) của
chíp AMD .Nếu kênh này khơng bị che, chíp AMD sẽ đáp lại bằng tín
hiệu ghi nhận yêu cầu HRQ.Vi xử lý sẽ đáp ứng bằng cách thả nổi bus
và gửi ra tín hiệu ghi nhận HLDA tới AMD. Khi AMD nhận đợc tín
hiệu này, nó sẽ gửi đợc một tín hiệu điều khiển các chuyển mạch kể
trên tới vị trí AMD của chúng.Việc này làm ngát xử lý khỏi bus và nối
AMD với bus. Lúc này AMD nhận quyền điều khiển bus và gửi ra địa
chỉ nhớ mà số liệu từ ngoại vi cần viết vào. Tiếp theo nó gửi tín hiệu
nhận AMD là DACK0 tới ngoại vi để báo cáo cho ngoại vi hãy sẵn
sàng gửi tiếp số liệu. Cuối cùng, chíp AMD hạ cả hai đờng IOR và
MEMW trên bus điều khiển tới mức lôgic thấp để cho phép ngoại vi
xuất byte số liệu ra và viết vào bộ nhớ. Khi việc truyền số liệu hồn tất,
chip AMD lấy di tín hiệu khi yêu cầu HRQ thả nổi bus. Các chuyển
mạch quay về vị trí ban đầu cho phép xử lý nắm lại quyền điều khiển
bus cho đến khi AMD yêu cầu tiếp theo. Việc truyền số liệu bằng
AMD từ bộ nhớ tới ngoại vi cũng đợc thực hiện theo cách tơng tự chỉ
có điều chíp AMD lúc này sẽ làm tích cực đờng điều khiển đọc bộ nhớ
MEMR và đờng điều khiển số liệu ra IOW.
Thông thờng chip AMD chuyển lên tục cả mảng số liệu, nên trong
nó có thanh đếm số từ (word count register) cho mỗi kênh. Sau mỗi
chuyển đợc một từ, nội dung thanh đếm giảm đi 1, địa chỉ AMD đợc
hiệu chỉnh lại (hoặc tăng hoặc giảm l). Khi nội dung thanh đếm số từ
bằng 0, chip AMD thơng báo kết thúc hoạt động AMD bằng tín hiệu

TC (terminal count) đợc tạo ra từ thanh đếm số từ. Kết thúc quá trình
AMD, chip AMD sẽ đa theo tín hiệu yêu cầu treo HRQ trở về mức tích
cực (HRQ = 0).
Có hai phơng pháp thực hiện AMD:
- Cách thứ nhất là xử lý chuyển nhợng bus cho AMD rồi tự treo
- Cách thứ hai là AMD lấy lén chu kì

2.2. Chip bổ trợ AMD-8237A
2.2.1. Sơ đồ nguyên lý
Vi mạch 8237A của hãng Intel là một ví dụ điển hình của một


chip điều khiển truy nhập bộ nhớ trực tiếp AMD trong máy vi tính IBM
PC. Đó là một vi mạch gồm có 40 chân và đợc chia làm hai hàng mỗi
bên 20 chân. Ta có thể thấy như trong hình sau:

Hình 16

AMD-8237A gồm 3 khối chính :
- Khối điều khiển và phân chia thời gian cho các hoạt động bên
trong và tạo tín hiệu điều khiển cho bên ngồi
- Khối điều khiển mã lệnh do CPU đa tới trớc khi phục vụ AMD
và giảI mã từ điều khiển chế độ để chọn điều kiểu AMD.
- Khối mã hoá đàu tiên làm trọng tài yêu tiên giải quyết u tiên cho
những kênh AMD yêu cầu phục vụ trong cùng một thời điểm.
Các chân tín hiệu là nh sau:
IOR: chỉ thị rằng chip AMD đang đọc số liệu từ ngoại vi địachỉ cảng.
IOW: AMD đang viết số liệu tới ngoại vi qua cảng.
MEMR: số liệu đợc đọc từ bộ nhớ chính.
MEMW:số liệu đang đợc viết ở bộ nhớ chính.

READY: tín hiệu vào từ bộ nhớ hoặc ngoại vi.
HLDA: CPU hoặc bus master báo cho biết nó đã rời khỏi
bus cho AMD.
ADSTB: nhận byte cao vào chốt địa chỉ ngồi của DAM.
AEN: kích hoạt chốt địa chỉ của AMD.
HQR: tín hiệu yêu cầu AMD từ chip 8237.
CS: tín hiệu chọn chip.
CLK: lối vào xung nhịp đồng hồ(4,77 MHz hoặc
7,16 MHz trong PC).
RESET: khởi động lại chip.
DACK0-DACK3: chấp nhận AMD
DREQ0-DREQ3: đòi hỏi AMD tử ngoại vi


×