Một số công nghệ nổi bật được áp dụng trong kiến trúc NetBurst như Hyper Pipelined TechnologyCông nghệ siêu ống mở rộng số hàng lệnh xử lý, làm hiệu suất máy có thể tăng 30%.. CÁC CÔNG N
Trang 1BÁO CÁO BÀI TẬP NHÓM
Môn: Kỹ Thuật Vi Xử Lý
GV: Ts.Hoàng Xuân Dậu
Đề tài : TÌM HIỂU VI XỬ LÝ PENTIUM 4
NỘI DUNG BÁO CÁO:
A Giới thiệu VXL P4 (xuất xứ và một số đặc điểm nổi bật)
D Tài liệu tham khảo
CHI TI ẾT BÁO CÁO
A GIỚI THIỆU VXL INTEL PENTIUM 4
Pentium 4 là bộ vi xử lý đơn nhân kiến trúc x86 thế hệ thứ 7 do Intel sản xuất, và là thiết kế CPU hoàn toàn mới đầu tiên của họ kể từ Pentium III năm 1995 Thiết kế mới này được gọi là kiến trúc NetBurst Không như Pentium II, Pentium III và Celeron, kiến trúc này được tạo mới hoàn toàn và thừa kế rất ít từ thiết kế Pentium Pro/P6 Một số công nghệ nổi bật được áp dụng trong kiến trúc NetBurst như Hyper Pipelined Technology(Công nghệ siêu ống) mở rộng số hàng lệnh xử lý, làm hiệu suất máy có thể
tăng 30% Execution Trace Cache tránh tình trạng lệnh bị chậm trễ khi chuyển từ bộ
Trang 2nhớ đến CPU, Rapid Execution Engine tăng tốc bộ đồng xử lý toán học, bus hệ thống (system bus) 400 MHz và 533 MHz; các công nghệ Advanced Transfer Cache, Advanced Dynamic Execution, Enhanced Floating point và Multimedia Unit, Streaming SIMD Extensions 2 (SSE2) cũng được cải tiến nhằm tạo ra những BXL tốc độ cao hơn, khả năng tính toán mạnh hơn, xử lý đa phương tiện tốt hơn Ghi nhận cùng với sự ra đời của Pentium 4 là công nghệ Quad Data Rate cho phép FSB (Front Side Bus) đạt đến tốc độ 400 MHz Khi đó, chip AMD Athlon đang chạy với tốc độ FSB là 266 MHz (công nghệ Double Data Rate)
B NỘI DUNG CHÍNH
I CÁC CÔNG NGHỆ MỚI
Khả năng cung cấp một số công nghệ mới và các tính năng được tăng cường trên đây dựa vào các tiến bộ mới nhất của Intel trong lĩnh vực thiết kế mạch, quản lý việc tiêu thụ năng lượng và tính toán không thể thực hiện được ở các mô hình vi kiến trúc của các thế hệ CPU trước
1 Hyper-Pipelined Technology - Công nghệ Siêu ống
Là công nghệ mới được giới thiệu trong Vi kiến trúc Netburst™ của Intel Nó tăng gấp đôi "độ sâu" của "ống" xử lý lệnh của CPU khi so sánh với mô hình Vi kiến trúc P6 được sử dụng ở các thế hệ CPU Pentium III Lệnh được thực hiện trong 20 giai đoạn (20 stages) trong vi kiến trúc Netburst, so với 10 giai đoạn trong vi kiến trúc P6 Ống lệnh dài giúp chip Pentium 4 có thể đạt được mức xung nhịp cao hơn
2 Execution Trace Cache
Là bộ nhớ đệm cấp 1 (Level 1 Execution Trace Cache) Bên cạnh 8KB bộ nhớ đệm dùng để chứa dữ liệu (data cache), Pentium 4 có khả năng lưu trữ đến 12K vi lệnh đã được giải mã (decoded micro-ops) nhằm giúp tăng cường tốc độ thực thi lệnh của CPU
Trang 33 Rapid Execution Engine - Cơ chế thực thi (lệnh) nhanh chóng
Điều này được thực hiện dựa trên hai Đơn vị Luận lý Số học (Arithmetic Logical Unit - ALU) đượ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
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 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
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
Trang 4Sau đó 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 chưa hoàn thất để xử lý và lưu kết quả ra bộ nhớ theo trật tự ban đầu của nó
6 Branch Prediction (phỏng đoán nhánh)
Kiến trúc NetBurst có thể nhớ được các nhánh trong chương trình chạy, giúp làm giảm độ trễ trong quá trình nhảy và nạp đầy ống lệnh, Các nhánh được lưu giữ trên cơ
sở địa chỉ lệnh bên trong Branch Target Buffer (BTB) Bộ vi xử lý có thể dự đoán được các nhánh sắp tới trước cả khi lệnh rẽ nhánh được thực hiện
7 Rapid Execution Engine
Trong Pentium 4, có 2 ALU (Arithmetic Logic Unit) và hai AGU (Address Generation Unit) chạy với mức xung gấp đôi xung clock Rapid execution engine được giới thiệu là làm giảm độ trễ của việc thực hiện các phép toán đơn giản Điều này thực sự có ý nghĩa vì hiệu năng và tốc độ của vi xử lý phụ thuộc rất nhiều vào các tính toán số nguyên trên ALU
8 Quad Data Rate
FSB của Pentium 4 có thể truyền bốn lần dữ liệu trong một xung clock Công nghệ này là Quad Pumped hay còn gọi là Quad Data Rate (QDR)
QDR khiến cho xung nhịp hiệu dụng tăng lên gấp 4 lần so với xung thực Nhờ đó các CPU Pentium 4 có thể đạt đến 400Mhz System bus, tốc độ truyền nhận dữ liệu vào-ra CPU là 3.2GBps so với tốc độ tương ứng là 1.06GBps của Pentium III (133Mhz system bus)
Real Clock Performance Transfer Rate
100 MHz 400 MHz 3.2 GB/s
133 MHz 533 MHz 4.2 GB/s
200 MHz 800 MHz 6.4 GB/s
Trang 5266 MHz 1, 066 MHz 8.5 GB/s
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
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
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 lệnh của một tiến trình, những phần chưa được sử dụng có thể được dùng để thực thi các tiến trình khác
Trong các CPU sử dụng công nghệ Hyper-Threading, mỗi CPU logic sở hữu một tập các thanh ghi, kể cả thanh ghi đếm chương trình PC riêng (separate program counter), CPU vật lý sẽ luân phiên các giai đoạn tìm/giải mã giữa hai CPU logic và chỉ cố gắng thực thi những thao tác từ hai chuỗi lệnh đồng thời theo cách hướng tới những đơn vị thực thi ít được sử dụng
Trang 6II SƠ Đồ KHỐI, CẤU TRÚC, CHỨC NĂNG CÁC BỘ PHẬN
1 Sơ đồ khối bộ VXL Intel Pentium IV
Trang 7
Một số điểm đáng chú ý:
Công nghệ Hyper Pipelined với pipeline lên tới 20 stage
Trang 8 FSB của Pentium IV có mức xung tối thiểu là 400MHz nhờ kỹ thuật QDR (Quad Data Rate), cho phép truyền bốn lần dữ liệu trong một xung clock, nhanh gấp rưỡi system bus 266MHz sử dụng công nghệ Double Data Rate của AMD Nhờ vậy, băng thông lên đến 3.2GB/s
Execution Trace Cache: cache lệnh (L1 instruction cache) được chuyển từ trước Fetch Unit ra phía sau Decode Unit và có tên là “Trace Cache”
Có tới 128 thanh ghi, trong khi CPU của Intel thuộc thế hệ thứ 6 (như Pentium II, Pentium III) chỉ có 40 thanh ghi
Advanced Dynamic Execution, nâng cao khả năng phỏng đoán nhánh và thực hiện lệnh không theo thứ tự (out-of-order execution)
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
1 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
Trang 920 tầng Pipeline của Pentium IV:
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
Stage 9 - Queue: các vi lệnh được đưa vào các hàng đợi dành riêng cho từng loại
(ví dụ: truy cập bộ nhớ, xử lý số nguyên hay dấu chấm động …) Lệnh nằm yên
trong hàng đợi cho đến khi có một chỗ trống tương ứng xuất hiện trong scheduler
Stages 10, 11, 12 - Schedule: scheduler sắp xếp lại các lệnh nhằm giữ cho mọi
execution unit đều hoạt động Ví dụ, nếu đơn vị xử lý dấu chấm động rảnh rỗi,
scheduler lấy ra một lệnh xử lý dấu chấm động để gửi cho đơn vị đó, mặc dù lệnh
tiếp theo trong chương trình có thể là một lệnh xử lý số nguyên
Stages 13 & 14 - Dispatch: gửi vi lệnh tới Execution Unit tương ứng
Stages 15 & 16 - Register Files: đọc register file
Stage 17 - Execute: vi lệnh được thực hiện
Stage 18 - Flags: cờ của vi lệnh được cập nhật
Stage 19 - Branch Check: kiểm tra nhánh của chương trình có cùng với suy đoán
của mạch dự đoán rẽ nhánh hay không
Stage 20 - Drive: gửi kết quả của việc kiểm tra này tới Branch Target Buffer (BTB)
Mặc dù về lý thuyết, pipeline dài có thể làm tăng hiệu năng, tuy nhiên, bất chấp điều
này, có quá nhiều stage sẽ khiến cho thời gian thực hiện một lệnh dài hơn Thứ hai là
một pipeline dài sẽ trở nên rất kém hiệu quả trong những trường hợp phỏng đoán
Trang 10nhánh sai (branch prediction error) Sẽ mất nhiều thời gian để lấp đầy pipeline một lần nữa Intel đã triển khai một vài biện pháp để bù lại sự mất mát hiệu năng trong những trường hợp này, đó là Execution Trace Cache và Dynamic Execution Engine
Thực tế là Pentium IV chỉ nhanh hơn Pentium III nhờ hoạt động ở mức xung nhịp cao hơn Với cùng mức xung nhịp, một CPU Pentium III sẽ nhanh hơn CPU 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 )
2 Bộ nhớ đệm
a Advanced transfer cache (Advanced L2 cache)
Cache L2 của Pentium 4 kết nối với cache dữ liệu L1 qua bus có độ rộng là bit Trong các thế hệ vi xử lí trước của Intel độ rộng này là 64-bit Với một vài phép toán đơn giản ta sẽ thấy băng thông giữa cache L2 và nhân là 44.8GB/s với Pentium
256-4 ở mức xung 1.256-4 GHz và 256-48GB/s với Pentium 256-4 ở mức xung 1.5 GHz, nhanh gấp 256-4
lần so với thế hệ trước với cùng một xung nhịp
b Execution trace cache
Như trên chúng ta đã biết cache lệnh được chuyển từ trước Fetch Unit ra phía sau Decode Unit và có tên gọi mới là "Trace Cache " Do đó thay vì lưu trữ vi lệnh để chuẩn bị nạp bằng Fetch Unit thì Trace Cache sẽ lưu trữ những vi lệnh đã được giải
mã nhờ Decode Unit Trace Cache lưu trữ được 12K 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)
Trang 11Ý tưởng đằng sau cách kiến trúc này là để tối ưu vòng lặp bên trong các chương
trình Khi một lệnh được thực thi nhiều lần, thì vi lệnh đã được giải mã sẵn và lưu
trong Trace Cache, và không cần giải mã lại nhiều lần như các VXL thế hệ trước
Giống như Fetch Unit, Trace Cache cũng có Branch Target Buffer (BTB) lên tới
4K vi lệnh Trong CPU của Intel thế hệ thứ 6, như Pentium III, bộ đệm này chỉ có 512
vi lệnh và trong thế hệ thứ 5, như bộ xử lý Pentium chỉ có 256 vi lệnh
3 Bộ giải mã - Decoder
Trang 12
Từ thế hệ thứ 6, CPU của Intel dùng kiến trúc tập lệnh lai CISC/RISC Bộ vi xử lí phải chấp nhận các lệnh CISC (Complex Instruction Set Computer), được biết như là tập lệnh của x86 Ngày nay hầu hết phần mềm sử dụng tập lệnh này Những bộ vi xử lí chỉ sử dụng tập lệnh RISC (Reduced Instruction Set Computer) không thể chạy được những chương trình thông dụng như: Windows, Office
Do đó các CPU hiện nay trên thị trường của cả Intel, AMD đều sử dụng một bộ giải
mã CISC / RISC Bên trong CPU xử lí lệnh kiểu RISC nhưng lại chỉ chấp nhận những lệnh CISC ở đầu vào Những lệnh CISC x86 được gọi chung là lệnh, còn những lệnh RISC bên trong được gọi là các vi lệnh hoặc “µop”
Những vi lệnh RISC này không thể sử dụng trực tiếp do đó những chương trình sẽ phải sử dụng tập lệnh CISC và được giải mã qua một bộ giải mã (Decoder) Mỗi một CPU sử dụng tập lệnh RISC riêng không công bố rộng rãi và nó không tương thích với
vi lệnh của CPU khác Ví dụ vi lệnh của Pentium III khác với vi lệnh của Pentium IV, khác với vi lệnh của Athlon 64
Tuỳ theo tính phức tạp của lệnh x86 mà nó sẽ được decode thành một số lệnh RISC nào đó Bộ giải mã của Pentium IV có thể giải mã một lệnh x86 mỗi xung clock thông thường một lệnh x86 giải mã cần 4 vi lệnh Nếu một lệnh x86 phức tạp có thể nhiều hơn 4 vi lệnh, nó được định hướng trong bộ nhớ ROM (“Microcode ROM” ở hình trên) “Microcode ROM” còn được gọi là MIS (Microcode Instruction Sequencer) lưu danh sách tất cả các lệnh cùng mô tả các vi lệnh tương ứng sẽ được dịch ra
4 Allocator và Register Renamer
Trong giai đoạn alloc, allocator sẽ:
Dành ra một trong 126 reorder buffers (ROB) cho vi lệnh hiện thời Nó cho phép thực hiện vi lệnh không theo thứ tự (out-of-order), CPU có thể đặt chúng trở lại thứ tự cũ sủ dụng bảng này
Trang 13 Dành ra một trong 128 register files (RF) để lưu trữ kết quả dữ liệu từ xử lí vi lệnh
Nếu vi lệnh là nạp (LOAD) hoặc ghi (STORE), có nghĩa là nó sẽ đọc hoặc viết dữ liệu trên bộ nhớ RAM, nó sẽ dành một trong số 48 bộ đệm nạp (Load 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
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
Trang 14
5 Scheduler
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
Scheduler sắp xếp những vi lệnh theo kiểu của chúng Sau đó nó có thể gửi mỗi vi lệnh trực tiếp tới Execution Unit tương ứng để xử lí Những Execution Unit được nối tới Scheduler qua 04 cổng gửi đi (dispatch port) được đánh số từ 0 tới 3, như hình dưới đây: