Vi xử lý là một chip bán dẫn kết hợp các chức năng của đơn vị xử lý trung tâm (CPU) trên một hoặc một vài mạch tích hợp. Nó là một thiết bị đa chức năng, lập trình được, nhận các tín hiệu số đầu vào, xử lý nó theo các lệnh lưu trong bộ nhớ, cung cấp kết quả đầu ra.
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
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
38 trang |
Chia sẻ: oanh_nt | Lượt xem: 1350 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Tiểu luận Tìm hiểu kiến trúc vi xử lý pentium M, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
LỚP : D09CN4
NHÓM 4
TIỂU LUẬN
ĐỀ TÀI: TÌM HIỂU KIẾN TRÚC VI XỬ LÝ PENTIUM M
THÀNH VIÊN :
Nguyễn Thị Hiền
Ngô Ngọc Hà
Nguyễn Ngọc Hà
Phan Văn Hải
Trần Bá Hoàng
Trịnh Văn Hiếu
Đào Quang Hợp
Đỗ Vũ
Mục lục
I,GIỚI THIỆU:
1, Giới thiệu chung
1.1, Vi xử lý là gì?
Vi xử lý là một chip bán dẫn kết hợp các chức năng của đơn vị xử lý trung tâm (CPU) trên một hoặc một vài mạch tích hợp. Nó là một thiết bị đa chức năng, lập trình được, nhận các tín hiệu số đầu vào, xử lý nó theo các lệnh lưu trong bộ nhớ, cung cấp kết quả đầu ra.
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
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
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
ALU có thể coi đơn giản như là một bộ cộng 8 bit, hoặc có thể cộng, trừ, nhân, chia
Thanh ghi thử là một chốt đặc biệt để giữ các giá trị từ phép so sánh trong ALU. Một ALU có thể so sánh hai số và quyết định xem chúng bằng nhau, nhỏ hơn hay lớn hơn số còn lại. Thanh ghi này còn để lưu bit từ trạng thái của bộ cộng trước đó.
3-state trong sơ đồ tren là bộ đệm tri-state(3 trạng thái) cho phép nhiều đầu ra kết nối với một dây dẫn nhưng chỉ có một trong số chúng được đi vào dòng 0 hoặc 1
Thanh ghi lệnh và bộ giải mã lệnh chịu trách nhiệm trong việc điều khiển tất cả các thành phần khác
2, Giới thiệu về vi xử lý Intel Pentium M(PM)
2.1, Xuất sứ
Pentium M được xây dựng trên kiến trúc thế hệ thứ 6 của Intel, kiến trúc này cũng được sử dụng trong các CPU Pentium pro, Pentium II, Pentium III và các CPU trước đây của celeron chứ không phải dựa trên Pentium 4. Kiến trúc P6 là thế hệ thứ 6 của vi kiến trúc Intel x86 với sự ra đời đầu tiên của vi xử lý Pentium Pro vào năm 1995, nó đã từng thành công với vi kiến trúc NestBurst và cuối cùng hồi sinh trong các dòng sản phẩm PM, người kế nhiệm của PM và các vi xử lý Core đời sau cũng đều là biến thể từ vi kiến trúc P6.
Intel Pentium M được sản xuất từ năm 2003 đến năm 2008, là bộ xử lý cuối cùng mang tên Pentium, trước đó là vi xử lý Intel Pentium 4. P 4 ra đời là kết quả của tác động thị trường hướng tới việc gia tăng tốc độ xung nhịp, nhưng đi kèm với đó là việc tiêu tốn điện năng và tỏa nhiệt lớn, không cho phép các máy tính xách tay hoạt động trong một thời gian dài. Intel hiểu họ phải làm gì đó nếu muốn tiếp tục cạnh tranh trong thị trường này, vì vậy họ giao nhiệm vụ cho một đội thiết kế đặt tại Isarel làm việc với bộ xử lý x86 mới để thiết kế từ đầu với mục tiêu tiết kiệm năng lượng đặt lên hàng đầu.
Hình 2.1-a: quá trình ra đời của các vi xử lý intel với số transitor tích hợp ngày càng tăng cao
Vi xử lý với tên mã là Banias cuối cùng là PM ra đời. PM là phiên bản cuối cùng và được cho là hoàn hảo nhất của kiến trúc P6. Nó là sự kết hợp giữa nhân P3 với các đặc tính tiên tiến của P 4, kết quả là được một vi xử lý có tốc độ khá nhanh với yêu cầu năng lượng thấp. Trong các bài kiểm tra benchmark, PM đứng ngang hàng với P4 với tốc độ xung nhịp cao hơn, sự ra đời của P3 cũng đánh dấu sự chấm dứt cho P4. Các vi xử lý Core thế hệ sau dựa trên nền tảng PM dù tên gọi khác hẳn. Vi kiến trúc PM thừa hưởng một vài đặc tính từ Pentium III và Pentium 4, bổ sung thêm nhiều đặc tính mới. Giống như các CPU Pentium 4, vi xử lý PM khai thác quaq-pump Front SideBus chạy ở 100 và 133MHz, hoặc hiệu quả hơn tại 400 và 533 MHz. P M chia ra 32 KB cache lệnh và cache dữ liệu( rộng hơn hai lần so với của Pentium 4 và Pentium III), cache thứ cấp rộng 1 hoặc 2 MB, bao gồm tập lệnh MMX, SSE, và SSE2. Vi xử lý hỗ trợ nhiều chế độ tiết kiệm năng lượng đã được giới thiệu trong Mobile Pentium 4, bao gồm chế độ Deeper Sleep. Thêm vào các chế độ này, CPU còn bao gồm bộ logic giúp tắt các phần trong CPU khi chúng không cần thiết để tiết kiệm điện năng. Intel PM còn được trang bị công nghệ SpeedStep tiên tiến, công nghệ này cho phép CPU chuyển đổi về tần số và điện áp thấp hơn khi không yêu cầu hiệu năng tối đa. Nằm trong gói 479 micro FC-BGA và gói 478 pin micro FC-PGA. Gói FC-PGA này không tương thích với các gói 478 khác mà Intel sử dụng với mobile Pentium III-M, Mobile Pentium 4/4-M. Core Duo/Solo và vi xử lý Core 2 Duo .
2.2, Ứng dụng
Mặc dù Intel đã hướng cho PM gia nhập thị trường các thiết bị di động, ngành sản xuất mainboard như AOpen, DFI và MSI đã thiết kế cho Pentium M tương thích với các bản mạch dành cho những người quan tâm, HTPC, máy trạm và máy chủ. Một bộ chuyển đổi, CT-479 đã được phái triển bởi ASUS để cho phép sử dụng vi xử lý PM trong các thiết kế bo mạch chủ được lựa chọn của ASUS cho socket 478 Pentium 4, Pentium M còn thích hợp với các hệ thống nhúng vì tính tiết kiệm năng lượng và Pentium M cho phép thiết kế không cần quạt tản nhiệt và thu nhỏ nhúng vào PC. Như đã nói ở trên Pentium M là một vi xử lý của Intel hướng tới thị trường di động và đã được sử dụng trong thế hệ đầu tiên của nền tảng Centrino.
Centrino không phải là một bộ vi xử lý cho laptop mà là một nền tảng kết hợp giữa 3 yếu tố:
Vi xử lý intel Pentium M
Intel wireless LAN
Một chipset Intel (855 hoặc tương tự)
3 thành phần này làm việc cùng nhau một cách thông minh giúp tiết kiệm điện năng tiêu thụ cho laptop.Trong một vài trường hợp, Pentium M được gọi là Centrino, thực ra chỉ có Centrino khi hội tụ đầy đủ 3 thành phần trên. Vì vậy nếu bạn có một laptop với Pentium M mà không có 2 phần kia thì không thể gọi là Centrino được. Nền tảng Centrino có 5 thế hệ và bộ xử lý PM được sử dụng trong hai thế hệ đầu tiên là Carmel và Sonoma.
2.3, Các thông số chính
Processor
Intel® Pentium® M Processor
Processor Number
780, 778, 773, 770,
765, 760, 758, 755,
753, 750, 745, 740,
738, 735, 733J,733,
730, 725, 723,718,
715, 713
NA
Architecture
90 nm, 130 nm processtechnology
130 nm process technology
L2 Cache
2MB, 1MB
1MB
Clock Speed
1,5 to 2.26 GHz
1,3 to 1,7GHz
Clock Speed--Low Volt
1.30 to 1.60 GHz
1.10 to 1.20 GHz
Clock Speed--Ultra Low Volt
1 to 1.30 GHz
1 GHz and 900 MHz
Front Side Bus
533 or 400 MHz
400 MHz
Chipset
Mobile Intel® 915 Express Chipset Family
Intel® 855 Chipset Family
Intel® 855 Chipset Family
Wireless
Intel® PRO/Wireless Network Connection
Intel® PRO/Wireless Network Connection
Cache L2
Là dung lượng của vùng nhớ đệm cấp 2. Đây là nơi lưu trữ các dữ liệu nằm chờ phần cứng xử lý. Mục đích của nó là để tăng tốc độ xử lý của chip. Chỉ số này càng cao sẽ giúp cho CPU xử lý nhanh và mượt mà hơn.
Clock speed:
Đây là xung nhịp của bộ vi xử lý được tính bằng số phép tính mà bộ vi xử lý tính được trong 1 giây. Xung nhịp là 1.6 GHz cho biết vi xử lý có thể tính được 1,6 triệu phép tính trong 1 giây. Không thể chỉ dựa vào xung nhịp để đánh giá độ mạnh yếu của vi xử lý vì nó còn phụ thuộc vào rất nhiều thứ như bộ nhớ đệm hay số nhân
Bộ xử lý PM làm việc dưới các tần số lõi như sau:
1.3GHz, 1.40GHz,1.50GHz,1.60GHz,1.70GHz
Trạng thái điện áp thấp: 1.10GHz, 1.20GHz,1.30GHz
Trạng thái điện áp cực thấp: 900MHz,1.00GHz,1.10GHz
FSB (Front Side Bus)
Là chỉ số đo tốc độ của đường giao tiếp giữa CPU và mainboard. Một chip vi xử lý được đánh giá nhanh hay chậm tuỳ thuộc khá lớn vào giá trị này. Khi chọn main và CPU bạn phải chọn CPU có Bus thấp hơn hoặc bằng mainboard thì CPU mới làm việc được tối đa công suất.
Instruction
Các tập lệnh được hỗ trợ: MMX, SSE và SSE2
package
Vi xử lý PM được đóng trong hai gói: Micro-FCPGA và Micro-FCBGA
Ngoài ra PM còn có một số đặc trưng sau
.
Đặc trưng
Lợi ích
Power Optimized 533/400 MHz processor system bus, Micro-ops Fusion & Dedicated Stack Manager.
Cho phép thực hiện nhanh hơn với năng lượng thấp hơn.
Support for enhanced Intel SpeedStep® Technology w/ multiple voltage & frequency operating points.
tinh toán tốt hơn về hiệu suất với nhu cầu của người dùng
Execute Disable Bit° Support
Công nghệ chống tràn bộ nhớ,chống lại một số vius và mã độc
Support for Intel® Mobile Voltage Positioning (Intel® MVP IV).
Tự động làm giảm điện áp dựa trên sự hoạt động của vi xử lý để thiết kế mức điện năng thấp hơn cho máy tính xách tay có kích thước nhỏ hơn.
Micro FCPGA & FCBGA packaging technology
Thiết kế mỏng hơn,nhẹ hơn nhưng vẫn mang lại hiệu suất vượt trội
2.4, Các dòng vi xử lý PM :
Pentium M đầu tiên đã được xác định bởi các tên mã là Banias, được đặt tên theo một trang web ở cao nguyên Golan, tiếp đó 10 tháng 5 năm 2004 Intel tung ra Pentium M với tên gọi là Dothan, đặt theo tên một thị trấn cổ xưa tại Israel.
2.4.1, Banias:
Dòng sản phẩm đầu tiên của Pentium M có tên mã la Banias.với cấu trúc bộ nhớ đệm L1 là 32kb,bộ nhớ đệm L2 là 1M,làm việc với tốc độ bus mặt trong là 400 Mhz(100 MHz vận chuyển 4 luồng dữ liệu trên 1 chu lỳ đồng hồ),hỗ trợ công nghệ SSE2,công nghệ Enhanced SpeedStep nâng cao trên mô hình SL6NA và SL6P4(làm giảm xung nhịp CPU để tiết kiệm pin khi máy tính nhàn rỗi).Banias sản xuất với quy trình 130nm,với socket 478 hoặc là 479 và có 77 triệu transistors trên diện tích 3.36 inch(cỡ 82.79 mm2),sử dụng đồng trên các lớp kim loại của nó.
Hình 2.4.1-a:Banias core
Thông số chính
Số tranzitor
77 triệu,nhiều hơn 23 triệu so với P4
L2 cache
1M
FBS
400 MHz
Process
130nm
Xung đồng hồ
1.3-1.7 GHz
Công suất
24.5W
2.4.2, Dothan
Hình 2.4.2-a: Dothan core
Intel ra mắt pentium M cải tiến với tên mã là Dothan,với nhưng phiên bản được biết đến là Pentium M 710 (1.4 GHz), 715 (1.5 GHz), 725 (1.6 GHz), 735 (1.7 GHz), 740 (1.73 GHz), 745 (1.8 GHz), 750 (1.86 GHz), 755 (2.0 GHz), and 765 (2.1 GHz).Dòng pentium M 700 vẫn giữ nguyên thiết kế như như bản gốc nhưng được sản xuất dưới công nghệ 90nm và gấp đôi bộ nhớ thứ cấp. Dothan có tới 140 triệu tranzitor, công suất được giảm xuống 21W(so với 24,5 W của dòng Banias). Mặc dù sử dụng năng lượng thấp hơn nhưng xung nhịp lại tăng nhẹ. Kết quả kiểm tra Dothan và banias trên laptop cho thấy mức tiêu thụ pin là như nhau
Hình 2.4.2-b: PM 730 core Dothan
Cấu trúc bộ nhớ đệm như sau: L1 là 32kb và l2 là 2M.làm việc với tần số bus 400 MHz hoặc là 533 MHz(100 MHz hoặc 133MHz chuyển bốn dữ liệu trên chu kỳ đồng hồ).có hỗ trợ cấu trúc SSE2,công nghệ Enhanced SpeedStep,và công nghệ Execute Disable,socket 478 và 479 và 140 triệu transistors trên diện tích vuông là 3.45 inch(87.66 mm2).
II, KIẾN TRÚC CỦA VI XỬ LÝ INTEL PENTIUM M
Trước khi tìm hiểu kiến trúc của vi xử lý PM, chúng ta hãy xem xét vi kiến trúc P6 và các đặc điểm nổi trội của nó so với thế hệ trước.Nếu như trong vi kiến trúc thế hệ thứ năm, đặc tính chính là kiến trúc superscalar, hai đơn vị thực thi lệnh có thể thực hiện đồng thời, song song thì trong kiến trúc P6 có xử lý động và kiến trúc hai bus độc lập, một tiến bộ lớn so với thế hệ trước.
Xử lý động(Dynamnic Execution): Cho phép bộ xử lý thực hiện nhiều lệnh song song, vì vậy tác vụ được hoàn thành nhanh hơn. Công nghệ mới này bao gồm 3 nhân tố chính:
dự đoán rẽ nhiều nhánh: dự đoán luồn chương trình thông qua một vài nhánh
phân tích dòng dữ liệu(Dataflow analysis): sắp xếp lịch trình cho các lệnh để được xử lý khi sắn sàng, không phụ thuộc vào thứ tự của chúng trong chương trình ban đầu
thực hiện suy đoán: tăng tỉ lệ thực thi bằng cách nhìn vào phía trước của bộ đếm chương trình và thực hiện các lệnh được cho là cần thiết
Hai bus độc lập: đặc tính chính của vi kiến trúc P6 được biết đến là có hai bus độc lập. Điều này đề cập đến thực tế là bộ xử lý có hai bus dữ liệu, một cho hệ thống(bo mạch chủ) và một dành riêng cho cache. Điều này cho phép bộ nhớ cache chạy ở tốc độ mà các thế hệ trước không thể nào sánh được.
Vi kiến trúc P6 nâng cấp vi kiến trúc P5 bằng cách thêm vào nhiều đơn vị thực thi hơn và bẻ các lệnh thành các vi lệnh nhỏ hơn. Đây cũng là lúc các lệnh CISC được bẻ thành các nhóm lệnh RISC nhỏ hơn. Các nhóm lệnh RISC thì nhỏ hơn và dễ xử lý song song hơn
Để hiểu rõ về kiến trúc PM hãy so sánh sự khác nhau giữa các CPU Pentium M và Pentium III:
Nhìn bên ngoài có vẻ như PM làm việc giống với P4, truyền tải dữ liệu 4 lần trên một chu kỳ clock. Kỹ thuật này gọi là QDR(quad data rate) và làm cho bus trong có hiệu năng tăng gấp bốn lần chỉ số thực của đồng hồ, xem bảng sau:
Real Clock
Performance
Transfer Rate
100 MHZ
400 MHZ
3.2 GB/s
133 MHZ
533 MHZ
4.2GB/s
Bảng : tốc độ thực của đồng hồ và hiệu năng bus đạt được
L1 memory cache: Hai L1 memory cache 32 KB, một cho dữ liệu và một cho chỉ lệnh (Pentium III có hai L1 memory cache16 KB).
L2 memory cache: 1 MB trên các mô hình 130 nm (lõi “Banias”) hay 2 MB trên các mô hình 90 nm (lõi “Dothan”). Pentium II chỉ có đến 512 KB. Celeron M, phiên bản rẻ tiền nhất của Pentium M cũng có 512 KB L2 memory cache. Hỗ trợ cho các lệnh SSE2.
Dự báo rẽ nhánh tiên tiến: Dự báo rẽ nhánh đã được thiết kế lại (và được dựa trên mạch của Pentium 4) để cải thiện hiệu suất.
Sự hợp các vi lệnh : Bộ giải mã chỉ lệnh hợp nhất hai vi lệnh thành một để có thể tiết kiệm được năng lượng và cải thiện hiệu suất.
Công nghệ SpeedStep nâng cao, đây là công nghệ cho phép các CPU có thể giảm được clock trong chế độ nhàn rỗi để tiết kiệm thời gian sống của pin. Một số tính năng nhằm tiết kiệm cho pin cũng đã được bổ sung vào kiến trúc siêu nhỏ của Pentium M, vì mục đích của các CPU này ban đầu được thiết kế cho các dòng di động.
Bây giờ chúng ta hãy đi xem xét sâu hơn về kiến trúc của Pentium M.
1. Sơ đồ khối :
Hình II.1-a: sơ đồ khối của bộ xử lý Pentium
Sơ đồ khối trên chỉ ra hai ống lệnh: U và V. Ống U có thể thực hiện tất cả các lệnh số nguyên và dấu phảy động, ống V dành cho các lệnh số nguyên đơn giản và lệnh dấu phảy động FXCH.
Các cache được chỉ ra bao gồm code cache và data cache. Data cache có hai cổng, mỗi cổng cho một ống lệnh. Data cache có một bộ đệm Translation Lookaside(TLB) dành riêng để truyền các địa chỉ tuyến tính tới các địa chỉ vật lý được data cache sử dụng
Code cache, branch target buffer và prefetch buffer chịu trách nhiệm lấy các lệnh vào cho đơn vị thực thi. Các lệnh được đọc vào từ cache lệnh hoặc từ bus ngoài. Các địa chỉ nhánh được ghi nhớ trong bộ đệm nhánh đích. TLB dịch các địa chỉ tuyến tính thành các địa chỉ vật lý cho code cache sử dụng
Đơn vị giải mã giải mã các lệnh được đọc vào để đơn vị xử lý có thể thi hành chúng. Đơn vị điều khiển ROM bao gồm các vi mã điều khiển chuỗi các thao tác phải được thực hiện, nó điều khiển trực tiếp cả hai ống lệnh.
2, Các thành phần chính và cách hoạt động của chúng
Hình II.2-a: vi xử lý Pentium
2.1, Pipeline trong Pentium M
2.1.1, Các giai đoạn và cơ chế hoạt động:
Pipeline là một danh sách các giai đoạn mà một lệnh cho trước phải đi qua để có thể được thực hiện đầy đủ. Intel không tiết lộ cấu trúc pipeline của Pentium M nên chúng ta sẽ nói về Pentium III. Việc phân tích Pentium III sẽ cho ta thấy cách vi kiến trúc Pentium M làm việc, trên cơ sở đó dự đoán các giai đoạn mà Intel đã đưa thêm vào kiến trúc này. Pentium M có kiến trúc cơ bản giống với PPro, P2 và P3 với các giai đoạn chính là : dự đoán rẽ nhánh, đọc lệnh, giải mã lệnh, register renaming(được sử dụng để tránh việc tuần tự hóa một cách không cần thiết của các thao tác chương trình bằng việc tái sử dụng các thanh ghi), reorder buffer read, reservation station(mỗi toán hạng trong mỗi lệnh trong hàng đợi có một vị trí trong các file thanh ghi ), các cổng thực thi, bộ đệm ghi lại và giai đoạn nghỉ. Một vài thay đổi nhỏ đã được tạo ra nhưng nói chung thì chức năng của chúng không khác nhau là mấy.
Hình II.1.2.1-a:cấu trúc pipeline của Pentium Pro
Hình II.1.2.1-b: pipeline của Pentium III
Sau đây là các giải thích cơ bản cho mỗi giai đoạn trong pipeline của P3, đồng thời giải thích cách thức các bộ xử lý P6 xử lý một lệnh được giao như thế nào
IFU1: tải từ 1 dòng(32 byte,256 bíts) từ cache lệnh L1 và lưu trữ trong Instruction Streaming Buffer
IFU2: nhận dạng lệnh giới hạn trong vòng 16 byte(128 bit). Kể từ lệnh x86 không có độ dài cố định, giai đoạn được đánh dấu từ lúc khởi đầu lệnh và kết thúc khi đã load được 16 byte. Nếu có lệnh rẽ nhánh nào trong vòng 16 byte này, địa chỉ của nó sẽ được lưu trữ tại Branch Target Buffer(BTB) để CPU có thể sử dụng những thông tin này trong mạch dự đoán rẽ nhánh
IFU3: đánh dấu nơi các lệnh giải mã được gửi tới, có 3 bộ giải mã hướng tới các đơn vị khác nhau
DEC1: giải mã lệnh x86 thành vi lệnh RISC, khi CPU có tới 3 bộ giải mã thì không thể cùng lúc giải mã 3 lệnh được
DEC2: gửi các vi lệnh đến hàng đợi giải mã lệnh, với dung lượng là 6 vi lệnh. Nếu lệnh được chuyển đổi thành nhiều hơn 6 vi lệnh thì giai đoạn phải được lặp lại để lấy các lệnh còn thiếu
RAT: từ khi vi kiến trúc P6 kế thừa OOO(out of order execution, một mô hình được sử dụng hầu hết trong các vi xử lý hiệu năng cao để tận dụng vòng đợi lệnh) , giá trị của một thanh ghi có thể được thay thế bởi việc đặt nó trong dòng chương trình trước khi tính đúng đắn của nó được xác định, làm gián đoạn việc lấy dữ liệu của các lệnh khác. Để giải quyết xung đột này, tại giai đoạn này , thanh ghi gốc mà lệnh sử dụng được đổi thành 1 trong 40 thanh ghi bên trong mà vi kiến trúc P6 có.
ROB: tại giai đoạn này , 3 micro-ops được load vào Reorder Buffer(ROB). Nếu tất cả dữ liệu cần thiết cho việc thi hành một vi lệnh có sẵn và nếu có một vị trí tại hàng đợi vi lệnh reservation station thì một vi lệnh sẽ được chuyển đến hàng đợi này
DIS: nếu vi lệnh không được gửi đến trạm đăng ký hàng đợi(RS) thì nó đã hoàn thành tại giai đoạn này. Vi lệnh sẽ gửi nó tới đơn vị thi hành thích hợp
EX: vi lệnh được thi hành tại đơn vị thi hành lệnh thích hợp, thường mỗi vi lệnh chỉ cần một chu kỳ đồng hồ để được thi hành
RET1: kiểm tra Reorder Buffer nếu có vi lệnh nào có thể đánh dấu cờ đã thi hành
RET2: khi tất cả các vi lệnh liên quan đến lệnh x86 trước đây đã được chuyển khỏi Reorder Buffer và các lệnh x86 hiện tại đang được thi hành, các vi lệnh này được chuyển khỏi Reorder Buffer và thanh ghi x86 được cập nhật. Giai đoạn nghỉ phải được thực hiện theo thứ tự. Có thể có đến 3 vi lệnh được chuyển khỏi Reorder Buffer trong mỗi chu kỳ clock
Độ dài của pipeline có thể ước lượng được từ việc misprediction penalty. Việc dự đoán sai trong PM kéo dài hơn trong P2 và P3 khoảng 3-4 chu kỳ clock. Điều này chỉ ra rằng pipeline PM phải dài hơn khoảng 3-4 giai đoạn, chúng ta sẽ lần lượt tìm hiểu xem các giai đoạn này dùng để làm gì.
Cơ chế dự đoán rẽ nhánh trong PM phức tạp hơn các bộ xử lý trước đó, vì thế có thể nó cần tới 3 giai đoạn trong pipeline thay vì hai. Việc tìm nạp lệnh cũng được cải tiến để giới hạn 16 byte hay giới hạn dòng cache không làm chậm lệnh nhảy. Việc này có thể yêu cầu mở rộng đơn vị đọc lệnh từ 3 lên 4 giai đoạn. Stack engine mới được thực hiện gần giải mã lệnh, ít nhất một giai đoạn pipeline được dành cho stack engine và cho việc đồng bộ hóa các vi lệnh được chèn trong stack. Liệu cơ chế hợp các vi lệnh có yêu cầu thêm giai đoạn trong pipeline hay không? Số các giai đoạn từ giai đoạn ROB-read tới giai đoạn ROB-writeback có thể ược ước lượng bằng cách đo việc đọc của thanh ghi. Quá trình đo đạc chỉ ra rằng nó chỉ khoảng 3 chu kỳ clock nên có thể kết luận là không có giai đoạn bổ sung nào dành cho việc tách các vi lệnh trước khi đưa chúng vào xử lý. Hai phần của một vi lệnh hợp cùng chia sẻ một lối vào ROB. Các giai đoạn RAT, ROB-read và RS đều đã được chỉnh sửa để xử lý hợp nhất 3 vi lệnh với 3 đầu vào phụ thuộc. Có thể một giai đoạn bổ sung của pipeline được thêm vào RAT vì khối lượng công việc trong giai đoạn này tăng lên. PM còn có nhiều đặc tính tiết kiệm năng lượng bằng cách tắt các phần trong bus trong, các đơn vị thực thi, … khi chúng không được sử dụng đến. Chúng ta không biết liệu các đặc tính này liệu có yêu cầu thêm giai đoạn trong pipeline hay không, nhưng nó mang lại ảnh hưởng tích cực trong việc chạy với tần số tối đa mà không làm nóng chip. Các cơ chế hợp lệnh, stack engine và dự đoán rẽ nhánh phức tạp không những giúp giảm hao phí điện năng mà còn giúp tăng tốc độ thực thi.
Nói tóm lại pipeline của PM có nhiều hơn pipeline PPro khoảng 3 đến 4 giai đoạn, bao gồm một giai đoạn cho dự đoán rẽ nhánh, một cho việc tìm nạp lệnh, và một cho stack engine
2.1.2, Hiện tượng nút cổ chai
Đây là điểm quan trọng cần chú ý, khi tối ưu hóa một mẩu của đoạn mã, để tìm ra nhân tố điều khiển tốc độ thực thi.
Truy cập bộ nhớ:Nếu chương trình đang làm việc với một lượng dữ liệu rất lớn, hoặc nếu dữ liệu được đặt rải rác trong bộ nhớ sẽ dẫn đến tình trạng cache không tìm đúng được dữ liệu đó. Việc truy cập vào dữ liệu không có trong cache dẫn đến việc tốn thời gian. Các cache được tổ chức như các dòng được căn độ dài 64 byte mỗi dòng, neesy một byte trong số 64 byte được truy ập thì tất cả 64 byte sẽ được tải về cache L1. Vì vậy để tránh tình trạng miss của cache, nên đặt các dữ liệu có liên quan ở cùng một chỗ. PM có 6 cổng ghi, việc có nhiều hơn 6 thao tác ghi liền lúc cũng khiến cho quá trình xử lý bị chậm lại vài chu kỳ clock.
Tìm nạp và giải mã lệnh: Các lệnh nên được tổ chức để sao cho không có quá 6 vi lệnh được sinh ra sau giải mã, tránh các lệnh có nhiều hơn 1 tiền tố, lệnh 26bit với toán hạng tức thì trong chế độ 32 bit
Hợp các vi lệnh: Hợp các vi lệnh và stack engine cho phép các vi lệnh chứa nhiều thông tin hơn. Nó có thể là một lợi thế nế bộ giải mã hoặc giới hạn 3 vi lệnh/chu lỳ clock là một nút cổ chai.
Các cổng thực thi: Các vi lệnh hợp sau khi được tách ra phải được phân bổ đều về 5 cổng. Cổng 0 và một dễ trở thành một nút cổ chai trong một đoạn mã có một vài thao tác với bộ nhớ. Các vi lệnh stack đồng bộ hóa đi đến cổng 0 hoặc 1. Số các lệnh kiểu này có thể được hạn chế bằng cách thay lệnh MOV liên quan đến con trỏ stack bằng các lệnh PUSH và POP
Dự đoán rẽ nhánh: Bộ đệm rẽ nhánh đích (BTB) trong PM nhỏ hơn trong các bộ xử lý khác vì vậy nên tránh các lệnh nhảy không cần thiết để hạn chế tải trên BTB.
2.2, Bộ nhớ cache và đơn vị tìm nạp
hình II.2.2-a: bộ nhớ cache và đơn vị tìm nạp
Dung lượng bộ nhớ cache L2 có thể là 1MB(dòng Banias) hoặc 2MB(dòng Dothan), trong khi vi xử lý có hai bộ nhớ cache L1, một có dung lượng 32KB để chứa các lệnh và phần còn lại chứa dữ liệu cũng với dung lượng 32KB. Đơn vị tìm nạp lệnh được chia làm 3 giai đoạn. Đơn vị tìm nạp tải một dòng(32 byte) vào trong bộ đệm dòng lệnh(ISB), sau đó Instruction Length Decoder nhận dạng ranh giới các lệnh trong vòng 16 byte. Các lệnh x86 không có độ dài cố định , giai đoạn này đánh dấu nơi lệnh bắt đầu và kết thúc trong vòng nạp 128 bit. Nếu có bất kỳ lệnh rẽ nhánh nào trong số các bit này, địa chỉ của nó sẽ được lưu lại tại Branch Target Buffer(BTB) để CPU có thể sử dụng chúng trong các mạch dự đoán rẽ nhánh. BTB có 512 lối vào. Sau đó giai đoạn Decoder Alignment đánh dấu vị trí của đơn vị giải mã lệnh mà mỗi lệnh được gửi tới.
2.3, Instruction Decoder và Register Renaming
Từ khi giới thiệu kiến trúc P6 với bộ xử lý Pentium Pro sử dụng kiến trúc CISC/RISC, bộ xử lý phải chấp nhận các lệnh CISC, còn được biết đến như là các lệnh của x86, cho đến nay, tất cả các phần mềm được viết đều sử dụng loại lệnh này. Một CPU chỉ có RISC không thể sử dụng trong PC bởi nó không chạy được các phần mềm ngày nay như Window hay Office. Vì vậy giải pháp được sử dụng cho tất cả các bộ xử lý trên thị trường ngày nay từ Intel tới AMD là sử dụng một bộ giải mã CISC/RISC. Trong CPU, RISC được xử lý như lệnh, nhưng phía trước kết thúc của nó chỉ chấp nhận các lệnh CISC x86
Các lệnh CISC x86 được gọi là lệnh như các lệnh RISC bên trong được gọi là vi lệnh. Tuy nhiên các vi lệnh RISC không được truy cập trực tiếp, vì vậy không thể tạo được phần mềm dựa trên các lệnh này thông qua bộ giải mã. Mặc dù vậy, mỗi CPU sử dụng ác lệnh RISC riêng không được công bố rộng rãi và không tương thích với các vi lệnh từ CPU khác. Vi lệnh của PM khác với P4. Phụ thuộc vào độ phức tạp của lệnh x86, nó phải được chuyển đổi về các vi lệnh RISC
Hình II.2.3-a: bộ giải mã lệnh và đổi tên thanh ghi
Có 3 bộ giải mã và một bộ sắp xếp vi lệnh(MIS), hai bộ giải mã được tối ưu hóa cho các lệnh đơn giản, chúng đư
Các file đính kèm theo tài liệu này:
- tieu_luan_vi_xu_ly_8854.docx