Đề Tài TÌM HIỂU KIẾN TRÚC VI XỬ LÝ INTEL PENTIUM 4 VI KIẾN TRÚC NETBURST Giáo Viên Hướng Dẫn NGUYỄN VIỆT HÙNG môn kỹ thuật vi xử lý - Pdf 28

ĐẠI HỌC KHOA HỌC HUẾ

KỸ THUẬT VI XỬ LÝ

Đề Tài :
TÌM HIỂU KIẾN TRÚC VI XỬ LÝ INTEL PENTIUM 4
VI KIẾN TRÚC NETBURST

Giáo Viên Hướng Dẫn : NGUYỄN VIỆT HÙNG
NHÓM 2:
Trần Thị Hoàng Nhung
Trương Thành Huy
Đặng Hoàng Nhật Anh
Nguyễn Thanh Hòa
Phan Minh Triết
Hồ Thanh Hiếu

1

MỤC LỤC
I. GIỚI THIỆU :.……………………………………… ……………………… 3
1. Giới thiệu chung …… ………….…………………………………………… 3
1.1 Vi xử lý là gì ?
……………………………………………………… 3
1.2 Các thành phần cơ bản
……………………………………………….4
2. Các công nghệ mới của Intel ……………………………………………………5
2.1 Hyper-Pipelined Technology - Công nghệ Siêu ống

3.3. ITLB and Front-End BTB
……………………………………… 18
3.4. IA-32 Intruction Decoder
…………………… …………………18
4. Out-of-oder Excution Logic ………………………………… ………………19
4.1. Allocator và Register Renamer
………………… …………… 19
4.2. Scheduler Funtions ……………………………… …………… 20
5. Integer and Floating-Point Execution Units
…………………… …………….21
5.1. Execution Unit ……………………………………… …………21
5.2. L1 Cache
……………………………………………… ……….23
6. Memory Subsystem
………………………………………………… ………23
6.1. Advanced Transfer Cache
……………………………………… 23
6.2. Bus hệ thống ………………………………………………… …24
IV . TẬP LỆNH
………………………………………………………………………24
1. General-purpose instructions ………………………………………………….25
2. Nhóm lệnh hệ thống
……………………………………………………………27
3. X87 FPU (Floating Point Unit) instructions ………………………… …… 27
4. X87 FPU and SIMD state management instructions…………………… ……28
5. CÔNG NGHỆ MMX …………………………………………………… … 29
6. SSE Instructions
……………………………………………………………… 30
7. Streaming SIMD Extension 2 (SSE2)
Instructions…………………………… 31

Vi xử lý là trái tim của bất kỳ một máy tính thông thường nào. Bất kể là máy
bàn, laptop hay server, vi xử lý bạn đang sử dụng là loại gì thì chúng cũng gần giống
nhau và làm việc theo cách gần như nhau
4

Một vi xử lý thi hành một loạt các lệnh máy báo cho đơn vị xử lý biết phải làm
gì. Dựa trên các lệnh, một vi xử lý làm được 3 việc cơ bản sau:
- Sử dụng ALU, một vi xử lý có thể làm các phép toán như cộng, trừ, nhân, chia. Các
vi xử lý hiện đại có thể bao gồm xử lý dấu phảy động với các phép toán yêu cầu độ
chính xác cao
- Một vi xử lý có thể chuyển dữ liệu từ một vị trí trong bộ nhớ tới một vị trí khác
- Một vi xử lý có thể tạo các quyết định và nhảy tới một tập lệnh mới

1.2, Các thành phần cơ bản:
Các thành phần cơ bản của vi xử lý nói chung :
- Một bus địa chỉ gửi địa chỉ tới bộ nhớ
- Một bus dữ liệu gửi hoặc nhận dữ liệu từ bộ nhớ
- Một đường RD(đọc) và WR(ghi) để vi xử lý thông báo cho cho bộ nhớ biết nó đang
gần đặt hay lấy giá trị của vùng được đánh dấu địa chỉ
- Một đường clock cho các xung clock của bộ xử lý
- Một đường reset bộ đếm chương trình về 0 khi bắt đầu thực hiện một lệnh
- Thanh ghi A,B,C là các chốt đơn giản được tạo từ các mạch lật
- Chốt địa chỉ(address latch) cũng giống các thanh ghi A,B,C

5 Hình 1.2.1-a : Các thành phần cơ bản của vi xử lý
- Bộ đếm chương trình là các mạch lật với khả năng tăng thêm 1 và trở về 0 khi được
yêu cầu .

được thiết kế bên trong Pentium 4. Nó cho phép Pentium 4 thực hiện các lệnh số
học (cộng, trừ, nhân chia) và luận lý (Và-And, Hoặc-Or ) chính với tốc độ gấp 2 lần
tần số xử lý cơ bản của bộ xử lý.
Như vậy CPU Pentium 4 - 2.0Ghz (bus 400Mhz) có khả năng thực hiện các
lệnh trên với tốc độ 4.0Ghz và CPU Pentium 4 - 2.53Ghz (bus 533Mhz) thực
hiện với tốc độ 5.1Ghz.
2.4. Advanced Transfer Cache (ATC)
Là bộ nhớ đệm cấp 2 (L2 Cache) được thiết kế bên trong Pentium 4. ATC có
hai loại: 512 KB L2 ATC với các tốc độ CPU 2.8Ghz - 2.53Ghz - 2.40Ghz -
2.40(B)Ghz - 2.26Ghz - 2.20Ghz - 2.0(A)Ghz và 1.6(A)Ghz; 256 KB L2 ATC với các
tốc độ từ 1.2Ghz - 2.0Ghz.
ATC cung cấp kênh truyền có thông lượng rất cao (high data throughput
channel) với nhân của CPU (CPU core). ATC bao gồm một giao diện 256-bit (32
7

byte) để truyền dữ liệu trên mỗi xung clock. Điều này cho phép ATC (L2 Cache) hỗ
trợ tốc độ cao gấp 4 lần tốc độ truyền dữ liệu của L2 Cache sử dụng trong các CPU
Pentium III.
Ví dụ: CPU Pentium 4 - 2.53Ghz có tốc độ truyền dữ liệu lên tới 81GB/giây, so
với tốc độ truyền dữ liệu 16GB/giây của Pentium III - 1.0 Ghz.

2.5. Out-Of-Order Execution
Nhân hỗ trợ Out-of-Order Execution có thể sắp xếp lại các vi lệnh, cho phép
lệnh (cùng với đầu vào và các tài nguyên hệ thống cần thiết) để thực thi ngay khi có
thể và tránh lãng phí thời gian.
Khi một vi lệnh đang chờ được cấp phát tài nguyên hoặc dữ liệu, các lệnh khác
(thường là trong buffer) có thể chen vào thực thi. Nhờ thực thi các lệnh song song,
những khoảng trễ của pipeline bị loại bỏ. Nhân có thể thực thi nhiều lệnh trong mỗ
giai đoạn của pipeline. Sau đó in-order retirement unit sẽ tìm các lệnh được hiện
xong và không còn phụ thuộc dữ liệu cũng như liên quan đến các lệnh rẽ nhánh

533 MHz
4.2 GB/s
200 MHz
800 MHz
6.4 GB/s
266 MHz
1,066 MHz
8.5 GB/s

2.9. Enhanced Floating Point & Multimedia Unit
Bộ xử lý Pentium 4 mở rộng các thanh ghi dấu chấm động (floating-point
register) lên tới 128-bit và tạo thêm một thanh ghi mở rộng nhằm phục vụ việc di
chuyển dữ liệu. Do vậy, khả năng xử lý các ứng dụng dấu chấm động (tính toán kết
cấu, số liệu tài chính, số liệu khoa học…) và truyền thông đa phương tiện (dựng và
xử lý phim video, xử lý hình ảnh đồ họa…) được tăng cường rất nhiều.

2.10. Streaming SIMD Extension 2 (SSE2) Instructions
Là tập lệnh hỗ trợ đồ họa mở rộng được thiết kế cho Pentium 4. Vi kiến trúc
Netburst™ (Netburst™ Microarchitecture) mở rộng khả năng xử lý theo kiểu cấu trúc
SIMD của các công nghệ Intel® MMX™ và SSE bằng cách thêm vào 144 lệnh mới.
Các lệnh này bao gồm các tác vụ số nguyên SIMD 128-bit (128-bit SIMD integer
arithmetic operations) và các tác vụ dấu chấm động (128-bit SIMD double-precision
floating-point operations). Các lệnh mới này làm tối ưu hóa khả năng thực hịên các
ứng dụng như phim video, xử lý âm thanh - hình ảnh, mã hóa, tính toán khoa học

2.11. Hyper Threading (siêu phân luồng)
Hyper threading là công nghệ cho phép một CPU vật lý hoạt động trên hệ
điều hành như là hai CPU logic hoạt động song song. Nó dựa trên nguyên tắc là
vào một thời điểm chỉ có một phần tài nguyên của CPU được sử dụng để thực thi
9

GB/s , rất cao ở thời điểm bấy giờ.
Pentium 4 đầu tiên (tên mã Willamette) xuất hiện cuối năm 2000 đặt dấu chấm
hết cho “triều đại” Pentium III. Willamette sản xuất trên công nghệ 0,18 µm, có 42
triệu transistor (nhiều hơn gần 50% so với Pentium III), bus hệ thống (system bus) 400
MHz, bộ nhớ đệm tích hợp L2 256 KB, socket 423 và 478. P4 Willamette có một số
tốc độ như 1,3, 1,4, 1,5, 1,6, 1,7, 1,8, 1,9, 2,0 GHz.
P4 Northwood xuất hiện vào tháng 1 năm 2002,được sản xuất trên công nghệ
0,13 ,có khoảng 55 triệu transistor,bộ nhớ đệm tích hợp L2 512 KB, socket
478.Northwood có 3 dòng gồm Northwood A(system bus 400 MHz),tốc độ 1.6, 1.8 ,
2.0, 2.2, 2.4, 2.5, 2.6, và 2.8 GHz. Northwoood B(system bus 533 MHz) tốc độ 2.26 ,
2.4, 2.53, 2.66, 2.8, 3.06 GHz (riêng 3.06 GHz có hỗ trợ công nghệ siêu phân luồng
Hyper Threading-HT). Northwood C (system bus 800 MHz,tất cả hỗ trợ HT), gồm
2.4, 2.6, 3.0, 3.2, 3.4 GHz.
P4 Prescott (năm 2004).Là BXL đầu tiên sản xuất theo công nghệ 90nm, kích
thước vi mạch giảm 50% so với P4 Willamette. Điều này cho phép tích hợp nhiều
transistor hơn trên cùng kích thước (125 triệu transistor so với 55 triệu transistor của
P4 Northwood), tốc độ chuyển đổi của transistor nhanh hơn, tăng khả năng xử lí, tính
toán. Dung lượng bộ nhớ đệm tích hợp L2 của P4 Prescott gấp đôi so với P4
Northwood (1MB so với 512KB). Ngoài tập lệnh MMX,SSE,SSE2, Prescott được bổ
sung tập lệnh SSE3 giúp các ứng dụng xử lí video và game chạy nhanh hơn. Đây là
giai đoạn “giao thời ” giữa socket 478-775LGA, system bus 533 MHz-800MHz và
mỗi sản phẩ được đặt tên khiến người dùng càng bối rối khi chọn mua.
11

Prescott A(FSB 533MHz)có các tốc độ 2.4, 2.26, 2.8 (socket 478),Prescott 505
(2,66GHz), 505J(2.66 GHz),506 (2,66 GHz), 511 (2,8GHz), 515J (2,93GHz), 516
(2,93GHz) , 519J (3,06GHz), 519 J(3,06GHz) sử dụng socket 775LGA.
Prescott E,F (năm 2004) có bộ nhớ đệm L2 1MB(các phiên bản sau được mở
rộng 2MB), bus hệ thống 800 MHz. Ngoài tập lệnh MMX, SSE2, SSE3 tích hợp,
Prescott E,F còn hỗ trợ công nghệ siêu phân luồng, một số phiên bản sau có hỗ trợ tính

nhánh mà chương trình sẽ thực hiện tiếp. Địa chỉ lệnh dự đoán từ front-end branch
prediction logic này được sử dụng để nạp các byte lệnh từ Cache L2. Những byte lệnh
IA 32 bit này sau đó được giải mã thành các vi lệnh (uops).
Vi kiến trúc Netburst có 1 dạng Cache lệnh L1 đặc biệt tiên tiến gọi là Execution
Trace Cache . Không giống như các Cache lệnh thong thường, Trace Cache nằm giữa
khối giải mã và khối thực hiện cơ bản như hình vẽ. Ở vị trí này Trace Cache có thể lưu
trữ được các lệnh IA 32 đã được giải mã hay còn gọi là các vi lệnh. Sau khi được lưu
trữ vào đây, các lệnh IA 32 đã được giải mã này sẽ được xóa khỏi vòng lặp thực hiện
lệnh chính của chương trình. Thông thường các lệnh được giải mã 1 lần và được đặt
vào Trace Cache sau đó được sử dụng nhiều lần từ đây giống như giống như các cache
lệnh thông thường trước . Bộ giải mã lệnh IA 32 chỉ được sử dụng khi Trace Cache bị
14

nhỡ và cần phải đến Cache L2 để lấy và giải mã các byte lệnh IA 32 mới.

2. Out-of-Order Execution Logic
Out-of-order execution engine là nơi các lệnh được chuẩn bị để thực hiện. Khối
logic thực thi Out-of-order có một số bộ đệm để sắp xếp lại trật tự thực hiện các lệnh
khi chúng được đưa vào ống lệnh và được lập lịch thực hiện. Khi 1 vi lệnh đang chờ
được cấp phát tài nguyên hoặc dữ liệu , các lệnh khác (thường là trong buffer) có thể
chen vào thực thi miễn là các lệnh khác này không phụ thuộc vào lệnh đang chờ kia .
Khối logic Retirement nhận được trạng thái hoàn thành của các lệnh đã được
thực hiện từ đơn vị thực hiện và quy trình kết quả, sau đó yêu cầu lại các lệnh này,
thực hiện chúng 1 cách không tuần tự so với chương trình ban đầu. Khối logic này
cũng sẽ báo cáo thông tin thực hiện nhánh vừa xong cho bộ phận dự đoán rẽ nhánh
của Front-end để cập nhật thông tin mới nhất về tình trạng nhánh phục vụ cho việc dự
đoán rẽ nhánh được chính xác hơn.

3. Integer and Floating-Point Execution Units
Excution Units là nơi lệnh thực sự được thực hiện.Phần này bao gồm các register


 Rapid Execute Engine, theo đó ALU của Pentium IV làm việc với xung nhịp
gấp đôi xung clock của CPU.

2. Hyper Pipeline Trong CPU Pentium III thì pipeline có 10 stage (giai đoạn). Pentium IV có 20
stage. Pentium IV với tên mã “Prescott” 90nm thậm chí còn có tới 31 stage. Intel
gọi đây là công nghệ siêu ống lệnh (Hyper Pipelined Technology).
Việc tăng độ dài pipeline hướng đến mục tiêu tăng xung nhịp. Có nhiều giai
đoạn hơn đồng nghĩa với các đơn vị chức năng có thể được cấu thành với số lượng
transitor ít hơn. Và với ít transistor thì sẽ dễ dàng nâng cao xung nhịp, về cơ bản là
như vậy. 20 tầng Pipeline của Pentium 4 :
 Stage 1 & 2 - Trace cache next instruction pointer: tìm vi lệnh tiếp theo sẽ
được thực hiện trong BTB (Branch Target Buffer).

Stage 3 & 4 - Trace cache fetch: nạp vi lệnh từ Trace Cache.

 Stage 5 - Drive: gửi vi lệnh đến resource allocator và mạch RAT.
 Stage 6 - Allocate: kiểm tra tài nguyên CPU cần thiết cho việc thực hiện lệnh.
Ví dụ bộ nhớ được dùng làm bộ đệm.
 Stages 7 & 8 - Rename: nếu chương trình sử dụng một trong tám thanh ghi
chuẩn x86 nó sẽ được đổi tên thành một trong 128 thành ghi của Pentium IV.
17



Pentium IV nhờ kích thước pipeline của nó.
Bởi vì sự kém hiệu quả của pipeline trong kiến trúc Netburst, thế hệ vi xử lý
thứ 8 của Intel (vi kiến trúc Core) quay trở lại với kiến trúc của Pentium M, một kiến
trúc dựa trên nền tảng của kiến trúc thế hệ thứ 6 thay vì tiếp tục phát triển thế hệ thứ 7
(Netburst ).
3. Front End
18 Khối Front End bao gồm một số đơn vị như hình vẽ,bao gồm :
- Instruction TLB (ITLB)
- The front-end branch predictor (labeled here Front-End BTB)
- The IA-32 Instruction Decoder
- The Trace Cache -Micocode ROM

3.1. Trace Cache
Trace Cache là cache chính hay cache lệnh level 1(L1) đảm nhiệm vận chuyển 3
vi lệnh mỗi xung nhịp đồng hồ tới khối logic Out-Of-Order Execution. Phần lớn các
lệnh trong chương trình là được nạp và thực hiện từ Trace Cache. Chỉ khi nào miss
Trace Cache thì vi kiến trúc NetBurst mới nạp và giải mã đến các lệnh ở Cache L2.
Trace Cache có khả năng nắm giữ tới 12 vi lệnh, mỗi vi lệnh trong Pentium IV có độ
rộng 100-bit nên trong Trace Cache có dung lượng 150KB (12288 x 100 /8). Nó có tỷ
lệ hit từ 8 đến 16K byte tương tự như các Cache lệnh thông thường.
Các lệnh IA-32 khá rườm rà để giải mã. Mỗi lệnh này có nhiều giá trị và lựa
chọn khác nhau. Khối logic giải mã lệnh (instruction decoding logic) cần phải sắp xếp
lại và chuyển đổi các lệnh phức tạp này thành các vi lệnh đơn giản mà máy có thể hiểu
và 14 thực hiên được. Việc giải mã này sẽ đặc biệt khó khi cố gắng giải mã các lệnh
19

IA 32 phức tạp trong mỗi chu kì xung nhịp đồng hồ khi Pentium IV hoạt động ở mức

thông tin về các trang trong bộ nhớ mà bộ xử lý đã truy cập gần đây.nó Dịch các địa
chỉ lệnh tuyến tính để được các địa chỉ vật lý cần thiết để truy cập vào bộ nhớ cache
L2.ITLB cũng thực hiên kiểm tra page-level protection . Instruction TLB and front-
end BTB sẽ chỉ đạo các hoạt động của Fron End khi máy bị missTrace Cache.
20

BTB = Branch Target Buffer,nó lưu trữ lịch sử của các nhánh lệnh đã thực hiện
trước đó và mục tiêu thực hiện của chúng để tiết kiệm thời gian tính toán cho ra các
mục tiêu này.
Đơn vị logic nạp (fetch) sẽ luôn cố gắng nạp đầu vào cho đơn vị giải mã là các
lệnh IA 32 tiếp theo mà chương trình sẽ cần thực hiện. Đơn vị Instruction prefetch sẽ
được chỉ đạo từ đơn vị logic branch prediction (đơn vị dự đoán nhánh)(trên hình vẽ
chính là khối Front-End BTB) để biết được lệnh gì sẽ được nạp tiếp theo.Bộ dự đoán
nhánh cho phép bộ xử lí bắt đầu nạp và thực hiện lệnh trước khi kết quả của nhánh
trước đó được biết. Đơn vị dự đoán rẽ nhánh này(branch prediction logic/front – end
BTB) có dung lượng khá rộng lên tới 4K entries ,do đó nó có thể nắm được hầu hết
các thông tin của các nhánh cũ đã thực hiện. Nếu 1 nhánh không tìm thấy ở BTB ,bộ
dự đoán rẽ nhánh dự đoán kết quả của nhánh dựa trên hướng của sự dời chỗ nhánh
(tiến hoặc lùi). Nhánh lùi được cho là được thực hiện và nhánh tiến cho là không thực
hiện.

3.4. IA-32 Instruction Decoder
The Istruction Decoder nhận các byte lệnh 32 bit từ Cache L2 64 bit, và giải mã
chúng thành các vi lệnh (uops) mà máy có thể hiểu và thực hiện được. Một bộ giải mã
đơn instruction decoder chỉ có thể giải mã được tối đa là 1 lệnh IA 32 trong 1 chu kì
đồng hồ mà thôi. Một số lệnh IA 32,mỗi lệnh có thể chuyển đổi được thành 1 vi lệnh
đơn,nhưng cũng có nhiều lệnh thì lại mỗi lệnh chuyển đổi được thành nhiều hơn 1 vi
lệnh .Trong trường hợp cần nhiều hơn 4 vi lệnh để hoàn thành giải mã 1 lệnh IA 32 thì
lúc này bộ giải mã sẽ gửi tín hiệu vào trong microcode ROM để lấy các vi lệnh tương
ứng . Tuy nhiê phần lớn các lệnh không cần phải nhảy vào microcode ROM để hoàn

Buffers - LB) hoặc một trong 24 bộ đệm lưu trữ (Store Buffers - SB) tương
ứng.
 Dành ra một đầu vào trên bộ nhớ hoặc hàng đợi, tuỳ thuộc vào từng vi lệnh.
Tập lệnh CISC x86 chỉ có 08 thanh ghi 32-bit (EAX, EBX, ECX, EDX,
EBP, ESI, EDI và ESP). Số này đơn giản là quá ít, đặc biệt là khi CPU có thể thực
thi theo kiểu out-of-order. Do đó, CPU phải đổi tên và nội dung của những thanh ghi
được sử dụng trong chương trình thành một trong 128 thanh ghi của CPU, điều này
cho phép những lệnh sử dụng cùng thanh ghi có thể chạy đồng thời. Thậm trí out-of-
order, có nghĩa là cho phép lệnh thứ hai chạy trước lệnh thứ nhất ngay cả khi chúng
sử dụng cùng một thanh ghi.
22

Chúng ta cần chú ý rằng Pentium IV thực sự có tới có 256 thanh ghi: 128
cho những lệnh số nguyên và 128 thanh ghi cho lệnh dấu chấm động và lệnh SSE.

Renamer của Pentium IV có khả năng xử lí ba vi lệnh trong một xung clock. Sau đó
từ renamer vi lệnh đi tới hàng đợi.
4.2. Scheduler Functions
Scheduler là trái tim của hệ thống out-of-order Pentium IV. Mục đính của Scheduler
là giữ cho mọi execution unit trong CPU luôn luôn làm việc. Các vi lệnh tới
scheduler sẽ được nó phân tích và đặt vào một trong bốn scheduler unit tùy theo kiểu
của vi lệnh:
 Memory scheduler unit: cho những vi lệnh liên quan đến bộ nhớ. Những vi
lệnh này đến từ hàng đợi của các vi lệnh bộ nhớ (memory microinstruction
queue).
 Fast scheduler unit: cho những vi lệnh đơn giản.
 Slow / General FP scheduler unit: cho những vi lệnh khác và những vi lệnh
xử lý dấu chấm động phức tạp.
 Simple FP scheduler unit: cho những vi lệnh dấu chấm động đơn giản.
23

này đang xử lý một lệnh rất phức tạp mất vài xung clock, cổng 1 sẽ vẫn tiếp tục nhận
các lệnh đơn giản nó và chuyển đến ALU trong khi FPU còn bận. Nếu để ý một chút,
ta thấy Intel đặt vào cùng một cổng một fast unit và một complex (slow) unit. Khi
complex unit còn đang bận tính toán, đơn vị còn lại có thể tiếp tục nhận vi lệnh từ
cổng tương ứng. Nên, mặc dù tối đa chỉ có 6 lệnh được chuyển, thực sự CPU có thể
có đến 7 lệnh cùng được xử lý một lúc.


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status