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 : 3
2, Giới thiệu về vi xử lý Intel Pentium M(PM) 5
2.1, Xuất sứ 5
2.2, Ứng dụng 6
2.3, Các thông số chính 7
2.4, Các dòng vi xử lý PM : 9
II, KIẾN TRÚC CỦA VI XỬ LÝ INTEL PENTIUM M 11
1. Sơ đồ khối : 13
2, Các thành phần chính và cách hoạt động của chúng 14
2.1, Pipeline trong Pentium M 14
2.2, Bộ nhớ cache và đơn vị tìm nạp 18
2.3, Instruction Decoder và Register Renaming 19
2.4, Bộ đệm xắp xếp 20
2.5, Reservation station và đơn vị thực thi 21
2.6, Đơn vị tính toán và số học ALU 23
2.7, Đơn vị xử lý dấu phảy động FPU(Floating Point Unit) 23
2.8, Cache L1 24
2.9, Giao diện bus 25
2. Kiến trúc tập lệnh 25
2.1, MMX(MultiMedia eXtentions, Multiple Math eXtension, orMatrix Math eXtension): 26
2.2, SSE (Single SIMD Extentions): 27
2.3, SSE2: 28
3,Cơ chế dự đoán rẽ nhánh trong PM 29
3.1, Mispredition penalty: 29
3.2, Mô hình nhận biết điều kiện nhảy 29
3.3, Nhận biết lệnh nhảy và lời gọi gián tiếp: 30
III, CÁC ĐẶC TÍNH VÀ CÔNG NGHỆ MỚI 31
1, Các đặc trưng chủ yếu của Intel Pentium M” 31
2, Công nghệ SpeedStep nâng cao(Enhanced SpeedStep Technology) 33
III, KẾT LUẬN 35
1. So sánh đánh giá 35
1.1, Nhân PM(kernel) 35
2. Kết luận chung 36
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
38 trang |
Chia sẻ: banmai | Lượt xem: 3308 | Lượt tải: 3
Bạn đang xem trước 20 trang tài liệu 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
ocess
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 sử dụng nhiều nhất. Loại lệnh này được chuyển đổi thành một micro-op. Bộ giải mã còn lại được tối ưu hóa cho các lệnh x86 phức tạp, có thể chuyển đổi lên đến 4 vi lệnh. Nếu các lệnh x86 không quá phức tạp, nó sẽ được gửi tới bộ sắp xếp vi lệnh, bao gồm một bộ nhớ ROM bao hàm một dãy các vi lệnh thay thế cho lệnh x86 ban đầu. Bộ giải mã lệnh có thể chuyển đổi 3 lệnh x86 trong mỗi chu kỳ clock, một lệnh phức tạp tại bộ giải mã 0 và hai lệnh đơn giản ở bộ gải mã 1 và 2, trả về hàng đợi lệnh đã được giải mã 6 vi lệnh mỗi chu kỳ clock. Điều này đạt được khi bộ giải mã 0 gửi đi 4 lệnh và hai lệnh đến từ hai bộ còn lại. Một lệnh x86 cực kỳ phức tạp có thể cần vài chu kỳ clock để giải mã, phụ thuộc vào bao nhiêu vi lệnh được sinh ra. Hàng đợi lệnh được giải mã chỉ có thể chứa được tối đa 6 vi lệnh, nếu có nhiều hơn 6 vi lệnh được sinh ra bởi MIS thì phải cần chu kỳ clock khác để gửi các vi lệnh này tới RAT.
PM sử dụng một khái niệm mới cho kiến trúc P6 gọi là hợp vi lệnh (micro-op fusion). Chỉ có đơn vị giải mã PM mới hợp hai vi lệnh thành 1, các lệnh này sau đó lại được tách ra trước khi đưa vào thi hành. Trong kiến trúc P6, mỗi vi lệnh dài 118 bit, PM thay vì làm việc với các vi lệnh 118bit, nó làm việc với vi lệnh 236bit (gộp lại từ hai lệnh 118 bit). Cần nhớ rằng mỗi vi lệnh vẫn có độ dài 118 bit, chúng chỉ được gói lại với nhau trong quá trình vận chuyển mà thôi. Ý tưởng đằng sau việc hợp lệnh này là để tiết kiệm năng lượng và tăng hiệu năng. Rõ ràng việc gửi đi một vi lênh 236 bit nhanh hơn việc phải gửi đi hai vi lệnh 118 bit. Ngoài ra CPU cũng ít ngốn điện hơn kho có ít vi lệnh trong mạch hơn. Các lệnh đã hợp được gửi tới RAT. Kiến trúc RISC x86 chỉ có 8 thanh ghi 32 bit. Con số này là quá thấp, đặc biệt đối với các CPU hiện đại. Vì vậy bộ xử lý ở giai đoạn này đổi tên và nội dung của thanh ghi mà chương trình sử dụng thành một trong 40 thanh ghi bên trong ( mỗi thanh rộng 80 bit vì vậy nhận cả dữ liệu kiểu nguyên và kiểu thực), cho phép các lệnh chạy ở cùng một thời điểm với các lệnh khác cũng đang sử dụng thanh ghi đó, điều này cho phép lệnh thứ hai có thể chạy trước lệnh thứ nhất ngay cả khi chúng dùng chung thanh ghi.
2.4, Bộ đệm xắp xếp
Khi các vi lệnh đến ROB, cúng có thể được tải và được thực hiên không đúng bởi đơn vị thi hành. Sau khi được thi hành, các lệnh được gửi trả lại bộ đêm sắp xếp. Sau đó tại trạng thái nghỉ, các lệnh đã được thi hành sẽ được ra khỏi bộ đệm với thứ tự y nguyên khi chúng được đẩy vào
Hình II.2.4-a: cách thức bộ đệm xắp xếp làm việc
2.5, Reservation station và đơn vị thực thi
Pentium M sử dụng các vi lệnh hợp từ đơn vị giải mã gửi tới các cổng đặt tại trạm đăng ký(RS). RS sẽ phân tích các hợp lệnh này. PM có 5 cổng gửi đi đánh số từ 0 đến 4 trên trạm đăng ký. Mỗi cổng kết nối với một hoặc nhiều đơn vị thực thi, có thể thấy trong hình sau:
Hình II.2.5-a: RS và Execution Unit
IEU: đơn vị thi hành lệnh nơi các lệnh thông thường(các lệnh số nguyên) được thực hiện, còn gọi là ALU.
Hình 5.2.2-a: Fetch Unit
FPU: đơn vị dấu phảy động nơi những lệnh phức tạp được thi hành
SIMD: nơi các lệnh SIMD được thi hành như MMX,SSE và SSE2
WIRE: các chức năng hỗn tạp khác
JEU: đơn vị xử lý nhảy rẽ nhánh
Shuffle: đơn vị này xử lý một loại lệnh của SSE gọi là suffer
PFADD: Thực thi một lệnh SSE có tên gọi PFADD (Packed FP Add) và cả các lệnh COMPARE, SUBTRACT, MIN/MAX và CONVERT. Đơn vị này được cung cấp riêng, chính vì vậy nó có thể bắt đầu việc thực thi một lệnh mới ở mỗi chu kỳ clock dù chưa thực hiện hết lệnh trước. Khối này có một độ trễ ba chu kỳ clock.
Reciprocal Estimates: Thực thi hai lệnh SSE : RCP (Reciprocal.Estimate) và RSQRT (Reciprocal Square Root Estimate).
Load: đơn vị này dùng để xử lý các lệnh đòi hỏi dữ liệu từ RAM.
Store Address: đơn vị xử lý các lệnh yêu cầu dữ liệu được ghi tại bộ nhớ RAM. Đơn vị này còn được gọi là AGU, Address Generator Unit. Kiểu lệnh này sử dụng cả hai đơn vị lưu dữ liệu và lưu địa chỉ ở cùng một thời điểm.
Store Data: đơn vị xử lý các lệnh hỏi dữ liệu để ghi vào bộ nhơ RAM. các lệnh phức tạp có thể mất đến vài chu kỳ clock để được xử lý.
Khi cổng 0, nơi đặt FPU trong khi đơn vị này đang xử lý một lệnh rất phức tạp, mất đến vài clock để thực thi thì cổng 0 sẽ không ngừng hoạt động: nó luôn luôn gửi các lệnh đơn giản đến IEU trong khi FPU đang bậnVì vậy, mặc dù tốc độ gửi đi tối đa là 5 lệnh giải mã trên mỗi một chu kỳ clock, nhưng thực tế CPU có thể tăng lên đến 12 lệnh tại cùng một thời điểm. khi các lệnh yêu cầu CPU đọc dữ liệu được lưu trữ tại địa chỉ RAM đã cho, đơn vị lưu trữ địa chỉ (Store Address Unit) và lưu trữ dữ liệu (Store Data Unit) cùng được sử dụng, một dùng cho tính toán địa chỉ và một dùng cho đọc dữ liệu. Đây là lý do tại sao cổng 0 và cổng 1 có nhiều đơn vị thực thi. Intel đặt một đơn vị xử lý nhanh với ít nhất một đơn vị phức tạp trên cùng một cổng. Trong khi đơn vị phức tạp đang bận xử lý dữ liệu thì các đơn vị khác có thể vẫn nhận các lệnh đã giải mã từ cổng gửi đi tương ứng của nó để giữ tất cả các đơn vị thực thi luôn làm việc. Sau mỗi một lệnh đã giải mã được thực thi, nó lại trở về bộ đệm Reorder Buffer, đây chính là nơi cờ của nó được thiết lập chế độ đã thực thi. Sau đó tại giai đoạn Retirement , các lệnh đã giải mã có cờ “ đã thực thi” sẽ được xóa khỏi Reorder Buffer theo thứ tự (như thứ tự khi giải mã ) và sau đó các thanh ghi x86 được cập nhật. Có thể có đến 3 lệnh giải mã được xóa khỏi Reorder Buffer trên mỗi một chu kỳ clock.
2.6, Đơn vị tính toán và số học ALU
ALU là một mạch điện tử thực hiện các thao tác số học và logic. ALU là một khối cơ bản của CPU trong một máy tính, và ngay cả vi xử lý đơn giản nhất cũng bao gồm một ALU cho các mục đích như duy trì bộ tính giờ. Một ALU tải dữ liệu từ thanh ghi đầu vào, một đơn vị điều khiển nó cho ALU biết các thao tác cần thực hiện với dữ liệu, sau đó ALU sẽ lưu trữ kết quả của phép tính vào một thanh ghi đầu ra. Bộ điều khiển(CU) chịu trách nhiệm chuyển các dữ liệu đã được xử lý giữa các thanh ghi, ALU và bộ nhớ.
Hầu hết các ALU đều có thể thực hiện các thao tác sau:
Các phép toán với bit(AND,NOT, OR, XOR)
Các thao tác với số nguyên : (cộng, trừ, nhân, chia)
Các phép dịch bit
các kiến trúc sư có thể thiết kế ALU để tính toán bất kỳ phép toán nào, ví dụ như tính toán căn bình phương của một số.
2.7, Đơn vị xử lý dấu phảy động FPU(Floating Point Unit)
Là một bộ phận của hệ thống máy tính được thiết kế để tính toán trên các số dấu phảy động. Hoạt động chính của các FPU bao gồm các phép tính toán số học thông thường như cộng, nhân. Một số FPU có thể thực hiện các chức năng phức tạp hơn như số mũ, logarit và lượng giác
2.8, Cache L1
Cache là một công nghệ dựa trên lý thuyết bộ nhớ cho hệ thống con (Subsystem) của máy tính. Mục đích chính của Cache là tăng tốc độ xử lý của máy tính mà không làm tăng giá máy. Cache cho phép máy tính thực hiện các tác vụ nhanh chóng hơn.Máy tính có thể thực hiện các thao tác trong một khoảng thời gian cực ngắn. Thời gian để bộ xử lý truy xuất tới bộ nhớ RAM chỉ khoảng 60 nano giây (1 nano giây bằng một phần tỉ giây). Đây là khoảng thời gian rất ngắn nhưng so với các bộ xử lý thông thường có chu kỳ 2 nano giây. Nếu xây dựng được một vùng bộ nhớ đặc biệt, nhỏ nhưng tốc độ xử lý nhanh (khoảng 30 nano giây) thì sẽ giảm được một nửa thời gian so với việc truy xuất vào RAM. Công nghệ này được gọi là L2 Cache.
Cache L1 hay còn gọi là cache chính, là một cache nhỏ, tốc độ cao kết hợp với bộ xử lý. Pentium M có hai cache L1, một cho dữ liệu và một cho các lệnh, sử dụng SRAM tốc độ cao thay vì DRAM rẻ nhưng chậm. Bộ nhớ cache được dùng để chứa các là L2 Cache là một chip nhớ nằm giữa L1 Cache ngay trên nhân CPU và bộ nhớ hệ thống. Khi CPU xử lý, L1 Cache sẽ tiến hành kiểm tra L2 Cache xem có dữ liệu mình cần không trước khi truy cập vào bộ nhớ hệ thống. Vì thế, bộ nhớ đệm càng lớn, CPU càng xử lý nhanh hơn. Đó là lý do mà Intel bên cạnh việc tăng xung nhịp cho nhân chíp, còn chú ý tới việc tăng dung lượng bộ nhớ Cache. Do giá rất đắt, nên dung lượng Cache không thể tăng ồ ạt được. Bộ nhớ cache chính L1 Cache vẫn chỉ ở mức từ 8 tới 32 KB. Trong khi, L2 Cache thì được đẩy lên dần tới hiện nay cao nhất là Pentium M Dothan 2 MB (cho máy tính xách tay) và Pentium 4 Prescott 1 MB (máy để bàn)
2.9, Giao diện bus
Hình 2.9-a: Các bus trong hệ thống máy tính
Trong kiến trúc Dual Independent Bus (DIB - hai tuyến bus độc lập), bus hệ thống dùng chung được tách thành Frontside Bus (FSB - tuyến bus trước) và Backside Bus (BSB - tuyến bus sau). FSB là nhịp cầu quan trọng nối bộ xử lý với bộ nhớ chính và tuyến bus ngoại vi. Trong khi BSB chỉ tập trung chuyển tải dữ liệu giữa bộ xử lý với bộ đệm thứ cấp. Tách bus hệ thống thành 2 kênh độc lập góp phần tăng hiệu năng xử lý nhờ cho phép bộ xử lý truy xuất đồng thời trên cả hai kênh giao tiếp quan trọng. Đôi lúc, thuật ngữ FSB và system bus được xem là một. Với việc tách thành hai tuyến bus độc lập, kiến trúc P6 đã cải thiện được tốc độ xử lý một cách đáng kể
2. Kiến trúc tập lệnh
Vi xử lý Intel Pentium M sử dụng kiến trúc lệnh x86, độ dài chỉ lệnh không cố định, với mục đích theo thiết kế CISC thể hiện tính tương thích ngược. Tuy nhiên bộ tập lệnh không phải thuộc loại CISC đặc trưng nào, cơ bản mở rộng có tính vị nhân hóa của phiên bản đơn giản 8 bit 8008,8080. Một byte có thể đánh địa chỉ và hỗ trợ 2 byte lưu trong bộ nhớ với trật tự nhỏ về cuối. Được truy xuất bộ nhớ đến địa chỉ không thẳng hàng với kích thước word (2byte). Các phép toán có thể thực hiện với 8 , 16, 32, 64 bit tùy theo thế hệ kiến trúc. Thực tế bộ tập chỉ lệnh không được cải thiện tốt hơn cho việc lập trình. Opcode (các loại code được viết dưới dạng ngôn ngữ máy) chính của x86 có thể lên đến 3 byte khá linh động.Hiện tại kiến trúc x86 mở rộng 40 bit không gian địa chỉ cho Xeon và 48 bit cho K10, cho phép đến 1 tera byte bộ nhớ RAM. Pentium M được hỗ trợ 3 tập lệnh là : MMX, SSE và SSE2
2.1, MMX(MultiMedia eXtentions, Multiple Math eXtension, orMatrix Math eXtension):
MMX (Multimedia Extensions) - tập gồm 57 lệnh multimedia do Intel phát triển năm 1997. Mục đích chính của MMX là nâng cao hiệu quả xử lý các lệnh lặp về âm thanh, hình ảnh và đồ họa. Đạt được điều này phần nào do một dòng lệnh đơn có thể xử lý đồng thời một số mục dữ liệu. MMX (năm 1996), phiên bản cải tiến của Pentium với công nghệ MMX được Intel phát triển để đáp ứng nhu cầu về ứng dụng đa phương tiện và truyền thông. MMX kết hợp với SIMD (Single Instruction Multiple Data) cho phép xử lý nhiều dữ liệu trong cùng chỉ lệnh, làm tăng khả năng xử lý trong các tác vụ đồ họa, đa phương tiện. MMX chỉ cung cấp các thao tác với số nguyên. Vào thời kỳ đầu, nó chỉ phục vụ cho toán học thông thường, nhưng với sự hỗ trợ của card đồ họa thì việc sử dụng MMX trong việc tính toán, xử lý tín hiệu 2D, 3D trở nên phổ biến, nó góp phần đáng kể cho các ứng dụng xử lý tín hiệu kỹ thuật số. CPU tích hợp tập lệnh này có sự cải tiến công nghệ ở chỗ bổ sung thêm 8 thanh ghi 64 bit (MM0-MM7). MMX cung cấp một số tập các phép tính số nguyên, sử dụng để hỗ trợ các ứng dụng video. Nó được định nghĩa bởi 8 thanh ghi (MM0 – MM7), mỗi thanh ghi gồm có 64 bit, là thanh ghi địa chỉ trực tiếp (truy cập ngẫu nhiên).
Với chức năng là đóng gói dữ liệu cho việc sử dụng một số nguyên 64 bit, 2 số nguyên 32 bit, 4 số nguyên 16 bit và 8 số nguyên bit có thể xử lý đồng thời.
Các nhóm lệnh trong MMX:
Nhóm lệnh truyền dữ liệu: (MOVD, MOVQ) sao chép dữ liệu giữa một thanh ghi số nguyên 32 bit hoặc một vùng nhớ từ và một thanh ghi MMX
Nhóm lệnh chuyển đổi: ví dụ dùng để chuyển đổi từ UNICODE sang mã ASCII, chuyển dòng audio 16 bit sang dòng 8 bit. Nếu có một chuỗi ký tự ANSI 8 bit, bạn có thể chuyển nó về UNICODE bằng cache đặt một thanh ghi MMX về 0
Các lệnh số học: thao tác với tập các byte, từ hoặc từ kép trong khối 64 bit
Các lệnh logic
Các lệnh so sánh
Các lệnh dịch
2.2, SSE (Single SIMD Extentions):
SSE (Streaming SIMD Extension) - tập gồm 70 lệnh mà Intel đưa vào Pentium III để phục vụ việc xử lý dữ liệu. Các lệnh này hỗ trợ cho xử lý ảnh, video, âm thanh và dữ liệu ba chiều. Các lệnh SSE có thể xử lý cả các số nguyên và số thực. Chúng có thể được áp dụng hiệu quả trong các ứng dụng 3 –D hoặc nén và giải nén hình ảnh. Gồm 8 thanh ghi 128 bit (XMM0 – XMM7), nó sử dụng một kiểu dữ liệu duy nhất cho mỗi thanh ghi XMM đó là 4 số thực 32 bit. Nhằm tăng cường chất lượng thực thi các tác vụ đồ họa 3 chiều (3D). Hỗ trợ khả năng thực hiện tính toán chấm động và hình học, các tính năng cần thiết để hiển thị và di chuyển hình ảnh 3D trên màn hình. Đây là tập hợp các lệnh tăng cường thứ 2 của Intel nhằm cải tiến khả năng đồ họa của các bộ vi xử lý (tập hợp đầu tiên chính là MMX). Nhóm lệnh SSE đại diện một phần mở rộng của mô hình thực thi SIMD với công nghệ MMX. SSE chỉ có thể thực thi trên các vi xử lí Intel 64 và IA-32 mà hỗ trợ các mở rộng SSE. Nhóm lệnh SSE được chia thành bốn nhóm phụ (lưu ý rằng các nhóm con đầu tiên có cấp dưới nhóm con của riêng của mình):
Nhóm lệnh xử lý toán hạng dấu phảy động với độ chính xác đơn trên thanh ghi XMM.Gô
Nhóm lệnh quản lý MXSCR
Nhóm lệnh toán hạng số nguyên 64-bit trên thanh ghi MMX
Nhóm lệnh điều khiển Cacheability, prefetch, và điều khiển thứ tự lệnh : Hiển thị chữ viết theo ngữ hệ La-tinhCác nhóm lệnh cacheability kiểm soát cung cấp kiểm soát bộ nhớ đệm lưu trữ tạm thời khi lưu trữ dữ liệu từ MMX và thanh ghi XMM vào bộ nhớ. Prefech cho phép dữ liệu được kiểm soát trước đến một cấp độ bộ nhớ cache được lựa chọn. Nhóm lệnh điều khiển SFENCE điều khiển sự lưu lại.
2.3, SSE2:
SSE2 : Streaming SIMD Extensions 2, là một trong những SIMD Intel (lệnh đơn, dữ liệu bội) hướng dẫn xử lý bổ sung bộ đầu tiên được giới thiệu bởi Intel với phiên bản ban đầu của Pentium 4 vào năm 2001. Nó mở rộng từ công nghệ MMX và công nghệ SSE các lệnh được thiết lập trước đó, và được dự định để thay thế đầy đủ MMX. Intel mở rộng SSE2 để tạo ra SSE3 vào năm 2004. SSE2 thêm 144 lệnh mới cung cấp tăng hiệu suất trên 1 loạt các ứng dụng. SSE2 cho phép các nhà phát triển phần mềm có sự linh hoạt tối đa để thực hiện các thuật toán và cung cấp cải tiến hiệu xuất khi chạy phần mềm chẳng hạn như MPEG-2, MP3, đồ họa 3D.
SSE2 là sự mở rộng khả năng tính toán của MMX hoạt động trên các thanh ghi XMM.Phần mở rộng bao gồm một bộ điều khiển bộ nhớ cache nhằm mục đích chủ yếu để giảm thiểu dư thừa dữ liệu không cần thiết lúc bộ nhớ cache khi xử lý dòng thông tin vô hạn, và bổ sung một tính toán tinh vi chuyển đổi định dạng số.SSE2 mở rộng tập lệnh MMX để hoạt động trên các thanh ghi XMM. Vì vậy, nó có thể chuyển đổi tất cả các mã hiện có của MMX sang SSE2 dưới dạng tương đương. Do thanh ghi XMM dài gấp đôi thanh ghi MMX, nên vòng lặp đếm và truy cập bộ nhớ phải thay đôi để phù hợp với thanh đổi này.
Mặc dù SSE2 có thể hoạt động bằng hai lần dữ liệu như một lệnh MMX, hiệu suất có thể không tăng đáng kể. Hai lý do chính đó là: khi truy cập SSE2 dữ liệu trong bộ nhớ không phù hợp với một nhóm 16-byte, và thông lượng của tập lệnh SSE2 trong hầu hết x86 triển khai thường nhỏ hơn so với các tập lệnh. SSE2 là phần mở rộng của kiến trúc IA-32, do đó các kiến trúc không hỗ trợ IA32 thì không hỗ trợ SSE2
SSE2 : hoàn thiện các phép tính số nguyên (từ MMX), các phép tính dấu chấm động 64 bit sử dụng trên các thanh ghi SSE. Nhóm lệnh mở rộng SSE2 Hiển thị chữ viết theo ngữ hệ La-tinhđại diện cho một phần mở rộng của mô hình thực thi SIMD với công nghệ MMX.Nhóm lệnh SSE2 làm việc tới toán hạng dấu phảy động với độ chính xác kép , byte, từ, từ kép, nửa từ trên thanh ghi XMM.Nhóm lệnh này được chia thành bốn nhóm nhỏ (lưu ý rằng các nhóm con đầu tiên được chia vào các nhóm con cấp dưới) :
Nhóm lệnh xử lý dấu phảy động với độ chính xác kép
Nhóm lệnh chuyển đổi dấu phảy động với độ chính xác đơn.
Nhóm lệnh số nguyên 128-bit
Nhóm lệnh điều khiển Cacheability and điều khiển thứ tự lệnh
Lệnh
Opcode
Ý nghĩa
ADDPD xmm1, xmm2/m128
66 0F 58 /r
Thêm giá trị đóng dấu chấm động gói với độ chính xác kép
ADDSD xmm1, xmm2/m64
F2 0F 58 /r
Thêm giá trị dấu chấm động với độ chính xác thấp
ANDNPD xmm1, xmm2/m128
66 0F 55 /r
Bit logic AND NOT
CMPPD xmm1, xmm2/m128, imm8
66 0F C2 /r ib
So sánh giá trị đóng gói dấu chấm động với độ chính xác kép
CMPSD xmm1, xmm2/m64, imm8
F2 0F C2 /r ib
So sánh giá trị dấu chấm động với độ chính xác thấp
3,Cơ chế dự đoán rẽ nhánh trong PM
3.1, Mispredition penalty:
Missprediction penalty mất khoảng 13 chu kỳ clock đối với Pentium M và 15 chu lỳ đối với Core2, phụ thuộc vào độ dài pipeline. Những lệnh nhảy, gọi, và trả về xa thì không dự đoán được
3.2, Mô hình nhận biết điều kiện nhảy
Cơ chế của dự đoán rẽ nhánh tiến bộ hơn các bộ vi xử lý tước đây. Điều kiện nhảy được xử lý bới một bộ dự đoán kết hợp giữa một bộ đếm vòng lặp và dự đoán hai tầng. Thêm vào đó có một cơ chế cho dự đoán các lệnh nhảy và lời gọi gián tiếp. Một lệnh rẽ nhánh được nhận biết là có hành vi lặp lại nếu đi một đường n-1 lần và sau đó đi vào đường khác một lần. Một bộ đếm vòng lặp có thể dự đoán hành vi lặp lại một cách hoàn hảo nếu độ dài của n không lớn hơn 64. Bộ đếm vòng lặp được lưu trữ trong mỗi nhánh mà không cần sử dụng bảng lịch sử toàn cục. Thay vào đó bộ đếm có vùng đệm riêng của nó với 128 lối vào. Vì vậy những dự đoán cho một vòng lặp không phụ thuộc vào số các nhánh rẽ khác bên trong vòng lặp. Những vòng lặp liên quan đến nhau cũng được dự đoán một cách hoàn hảo.
Các nhánh không lặp được dự đoán bằng cách sử dụng dự đoán hai tầng với bộ đệm 8 bit và một mô hình history table không biết kích cỡ. Khả năng dự đoán một mô hình rẽ nhánh lặp đi lặp lại, hoặc mô hình lặp đơn, phụ thuộc vào số lượng nhánh rẽ trong một vòng lặp theo các quy tắc cho một dự đoán với một bảng lịch sử toàn cục.Một meta-predictor sẽ quyết định liệu một nhánh có lặp lại hay không và sử dụng cơ chế dự đoán theo nó.
3.3, Nhận biết lệnh nhảy và lời gọi gián tiếp:
Lệnh nhảy và lời gọi gián tiếp (không phải trả về) được dự đoán sử dụng dự đoán hai tầng giống như lệnh rẽ nhánh. Các nhánh rẽ không lặp và lệnh nhảy,lời gọi gián tiếp cùng chia sẻ bộ đệm lịch sử và mô hình bảng lịch sử, nhưng rõ ràng là không cùng BTB. Một lệnh nhảy/lời gọi sẽ có một cổng vào BTB mới mỗi lần nó nhảy tới một đích mới, nó có thể có nhiều hơn 4 cổng BTB mặc dù BTB chỉ có 4 đường. Bộ đệm lịch sử lưu trữ nhiều hơn một bit cho mỗi cổng vào để phân biệt giữa hai đích trong một lệnh nhảy/lời gọi gián tiếp. Nhờ vậy có thể dự đoán một chu kỳ nhảy chuyển đi chuyển lại giữa một vài đích khác nhau. Số các đích khác nhau tối đa đã thấy là 36 nhưng con số có thể ấn tượng hơn nữa. một mô hình định kỳ có thể được dự đoán nếu tất cả độ dài của các mô hình con là khác nhau. Nó còn cải tiến dự đoán cho các điều kiện nhảy bới chúng dùng chung bộ đệm lịch sử. Một điều kiện nhảy có thế tạo ra một dự đoán dựa trên sự khác nhau giữa đích nhảy và lệnh nhảy gián tiếp trước đó.
Các quan sát trên chỉ ra bộ đệm lịch sử phải có ít nhất 8*6=48 bit, nhưng mô hình bảng lịch sử với 248 cổng vào là không thể về mặt vật lý. 48 bit hoặc hơn thế phải được nén lại hởi một số thuật toán chia nhỏ vào một khóa có x bit để đánh số cho 2x Cổng vào của bảng lịch sử. Giá trị x nằm trong khoảng 10 đến 16. Thuật toán chia nhỏ có thể chỉ là một phép XOR các bit từ bộ đệm lịch sử và địa chỉ BTB của câu lệnh rẽ nhánh.
Pentium M và Core 2 tạo ra nhiều dự đoán trật hơn mong đợi trong các chương trình có nhiều nhánh không lặp hoặc các lệnh nhảy/lời gọi gián tiếp ở cuối vòng lặp.
Thiết kế này gây ra 3 hậu quả cho việc dự đoán kém: thứ nhất cạnh tranh lối vào BTB. Thứ hai việc các khóa được sinh ra nối tiếp bởi thuật toán chia nhỏ gây ra cạnh tranh giữa các lối vào bảng. Hiện tượng này không chỉ xảy ra đối với lệnh nhảy/lời gọi gián tiếp mà còn đối với điều kiện nhảy được dự đoán bởi dự đoán hai tầng. Cái thứ 3 có thể xảy ra là hiệu năng của meta predictor giảm sút. Nguyên nhân chính gây ra việc khả năng dự đoán thấp hơn mong đợi này là do kích vỡ của mô hình bảng lịch sử không đáp ứng đủ.
Việc cải tiến dự đoán rẽ nhánh cho các nhánh rẽ trực tiếp và cho các vòng lặp động với sự bổ sung của bộ phận dò tìm vòng lặp đã mang giúp cho hiệu suất xử lý tăng cao.
III, CÁC ĐẶC TÍNH VÀ CÔNG NGHỆ MỚI
1, Các đặc trưng chủ yếu của Intel Pentium M”
Hỗ trợ kiến trúc Intel® Dynamic Execution
Hiệu năng cao, nhân tiết kiệm năng lượng
Cache lệnh chính 32KB và cache dữ liệu 32KB
1MB cache L2 với kiến trúc truyền tải tiên tiến
Dự đoán rẽ nhánh nâng cao và lấy dữ liệu trước
SSE2 cho phép thực thi các ứng dụng đa phương tiện bao gồm đồ 3D, mã hóa/giái mã video và tốc độ nhận biết nhanh
400 MHz, đồng bộ tài nguyên bus hệ thống để cải thiện hiệu năng truyền tải dữ liệu bằng cách truyền dữ liệu 4 lần mỗi xung nhịp
Các tính năng quản lý năng lượng tiên tiến trong đó công nghệ SpeedStep nâng cao
Công nghệ đóng gói Micro-FCPGA và Micro-FCSGA
Sản xuất trên quy trình tiên tiến 0.13 micron với kết nối bằng đồng
Hỗ trợ cho công nghệ MMXTM
Tập lệnh Internet Streaming SIMD hoàn toàn tương thích với phần mềm IA-32
Cơ chế hợp nhất vi lệnh và quản lý stack tiên tiến giảm thiểu số lệnh mà bộ xử lý phải xử lý
Kiến trúc dự đoán rẽ nhánh tiên tiến giảm đáng kể tình trạng miss
Xử lý dấu phảy động với độ chính xác gấp đôi, đáp ứng các yêu cầu về độ chính xác cao của các chương trình ứng dụng như khoa học, kỹ thuật, kỹ thuật , xử lý hình học như đường đi của tia sáng
Bộ xử lý Intel PM hỗ trợ các trạng thái AutoHALT, Stop Grant, Deep Sleep và Deeper Sleep
Trạng thái bình thường
Trạng thái AutoHALT: Là trạng thái năng lượng thấp khi bộ xử lý thi hành lệnh HALT.Một bộ quản lý ngắt quãng (SMI) sẽ trả về thi hành cho trạng thái bình thường hoặc trạng thái AutoHALT. Trong lúc ở trạng thái AutoHALT, bộ xử lý sẽ tiến hành xử lý snoop trên bus hệ thống và nó sẽ khóa cung cấp ngắt trên bus hệ thống
Trạng thái HALT/ Grant Snoop: Bộ xử lý sẽ đáp ứng snoop hoặc thực hiện ngắt trên bus hệ thống khi ở trong trạng thái Stop – grant hoặc Auto HALT, trong khi xử lý một snoop hoặc lệnh ngắt, bộ xử lý đi vào trạng tháu HALT/Grant Snoop, bộ xử lý sẽ duy trì tinhd trạng đó cho tới khi snoop trên bus hệ thống đã được đáp ứng hoặc lệnh ngắt đã bị khóa, sau đó nó trở về trạng thái Stop Grant hoặc AutoHALT tương ứng
Trạng thái ngủ:Là trạng thái năng lượng thấp mà bộ xử lý duy trì ngữ cảnh của nó, duy trì PPL(phase locked loop) và dừng mọi clock bên trong. Trạng thái ngủ chỉ được gọi từ trạng thái Stop-Grant. ở trạng thái Stop grant, bộ xử lý sẽ rơi vào trạng thái ngủ khi tín hiệu SLP# được xác định. Sự kiện snoop xảy ra trong trạng thái ngủ hoặc đang trong quá trình vào hoặc ra khỏi trạng thái ngủ sẽ gây ra những hành vi không đoán biết được.
Không có việc truyền hoặc xác nhận tín hiệu nào được phép trong bus hệ thống khi bộ xử lý đang trong trạng thái ngủ. Bất kỳ việc truyền tín hiệu hoặc tín hiệu đầu vào trước khi bộ xử lý trả về từ trạng thái Stop grant là nguyên nhân có các hoạt động ngoài dự đoán
Trạng thái ngủ sâu : Là trạng thái năng lượng rất thấp mà bộ xử lý có thể đạt tới trong khi vẫn duy trì được ngữ cảnh. Trong khi ở trạng thái này, bộ xử lý có khả năng đáp ứng thực hiện snoop hoặc tín hiệu ngắt quãng. Không có việc thực hiện tín hiệu nào được cho phép trong hệ thống bus trong khi bộ xử lý đang ở trong trạng thái ngủ sâu. Mọi việc thực hiện tín hiệu đầu vào trước khi bộ xử lý trả về trạng thái Stop Grant sẽ là nguyên nhân gây nên những hoạt động ngoài dự đoán
Trạng thái ngủ sâu hơn: Là trạng thái năng lượng thấp nhất mà bộ xử lý có thể đạt được. trạng thái này về mặt chức năng thì cũng giống với trạng thái ngủ sâu nhưng ở mức điện áp thấp hơn.
2, Công nghệ SpeedStep nâng cao(Enhanced SpeedStep Technology)
Công nghệ SpeedStep được tạo ra để tăng tuổi thọ của pin. Nó được giới thiệu đầu tiên trong các bộ vi xử lý của Pentium III. Phiên bản đầu tiên của công nghệ này cho phép các CPU có thể chuyển giữa hai tần số clock một cách động. Chế độ tần số thấp (LFM), chế độ cho phép thời lượng sống của pin lớn nhất, và chế độ tần số cao (HFM), chế độ cho phép chạy CPU tại tốc độ lớn nhất. CPU có hai tỉ lệ nhân clock. Tỉ lệnh LFM là tỉ lệnh factory-lock và bạn không thể thay đổi được tỉ lệ này. Công nghệ SpeedStep nâng cao có một vài cấu hình clock và điện áp khác giữa LFM (cố định là 600 MHz) và HFM.
Pentium M được trang bị công nghệ speed step nâng cao, cho phép vi xử lý chuyển giữa nhiều tần số và điện áp, việc này cho phép tối ưu hóa việc tiết kiệm năng lượng, việc chuyển đổi giữa các trạng thái được phần mềm điều khiển, không giống các thế hệ trước. Sau đây là các đặc tính chủ đạo của công nghệ này:
Đa tần số/điện áp cung cấp khả năng tối ưu hóa hiệu năng tại mức năng lượng thấp nhất
Việc lựa chọn điện áp/tần số được điều khiển bởi phần mềm bằng cách ghi vào bộ xử lý MSR do đó loại trừ được việc phụ thuộc vào chipset.
Nếu tần số đích cao hơn tần số hiện tại, Vcc được đẩy lên bằng cách thay thế các giá trị mới cho pins VID sau đó PLL khóa cho tần số mới. Nếu tần số đích thấp hơn tần số hiện tại, PLL khóa co tần số mới và Vcc được thay đổi thông qua cơ chế VID pin. Sự chuyển tiếp phần mềm được chấp nhận ở bất kỳ thời điểm nào. Nếu một sự chuyển tiếp trước đó đang được tiến hành, sự chuyển tiếp mới bị trì hoãn cho đến khi nó được hoàn thành
Bộ xử lý kiểm soát mức độ tăng điện áp trong để đảm bảo không có trục trặc
Độ trễ chuyển tiếp thấp và số lượng trong mỗi giây
Không có bus chủ quyết định việc vô hiệu hóa các yêu cầu trước quá trình chuyển đổi và không có bộ xử lý dàn cache cần thiết
Chế độ Intel thermal Monitor được cải thiện
Khi cảm biến nhiệt chỉ ra rằng nhiệt độ đã tăng quá cao, bộ xử lý có thể tự động chuyển sang tần số/ điện áp thấp hơn được chỉ định bởi một phần mềm lập trình được MSR. Bộ xử lý chờ trong một khoảng thời gian ngắn cố định. Nếu nhiệt độ hạ xuống mức cho phép, nó sẽ lại chuyển về trạng thái tần số/điện áp trước đó. Một lệnh ngắt quãng được sinh ra cho việc chuyển lên/ xuống cho phép quản lý các mức nhiệt tốt hơn.ví dụ: bảng cấu hình clock và điện áp cho 1.6 GHz Pentium M dựa trên công nghệ 130nm:
Điện áp
Clock
1.484 V
1.6 GHz
1.42 V
1.4 GHz
1.276 V
1.2 GHz
1.164 V
1 GHz
1.036 V
800 MHz
0.956 V
600 MHz
Mỗi một mô hình của Pentium M lại có một bảng điện áp/clock của riêng nó. Bạn cần phải chú ý một điều rằng khi không cần tốn nhiều năng lương đối với laptop thì không những chỉ giảm tốc độ clock mà còn giảm cả điện áp, việc giảm điện áp sẽ giúp giảm tiêu tốn rất nhiều pin máy. Công nghệ Enhanced SpeedStep làm việc bằng cách kiểm tra các thanh ghi model cụ thể MSR (Model Specific Registers) của CPU, thành phần này được gọi là Performance Counter. Với thông tin thu nhận từ bộ phận này, CPU có thể giảm hoặc tăng clock/điện áp của nó phụ thuộc vào khả năng sử dụng của CPU. Đơn giản nếu bạn tăng yêu cầu sử dụng CPU thì nó sẽ tăng clock/điện áp còn nếu bạn giảm hiệu suất sử dụng CPU thì nó sẽ giảm clock/điện áp.
III, KẾT LUẬN
1. So sánh đánh giá
1.1, Nhân PM(kernel)
Nhân PM được chỉnh sửa từ nhân PPro trước đây với việc tập trung vào tiết kiệm năng lượng. Rất nhiều nỗ lực đã cho vào việc tắt bớt các phần của đơn vị thực thi và các bus khi nó không được sử dụng đến. Việc giảm thiểu tiêu tốn năng lượng còn mang lại những lợi ích bên cạnh đó, vì ít tốn điện cũng đồng nghĩa với việc máy có thể làm việc ở tần số tối đa mà không làm nóng chip quá mức
Việc giải mã lệnh bị giới hạn bởi luật: mỗi lần giải mã tối đa chỉ sinh ra được 6 vi lệnh trong mỗi chu kỳ clock. Nếu có lệnh sinh phức tạp giải mã ra nhiều hơn 6 lệnh thì phải mất thêm hai hoặc vài chu lỳ clock nữa để giải mã, và các lệnh khác không thể giải mã song song. Các phần mềm phải tuân thủ luật trên nếu muốn tối ưu hóa giải mã lệnh, thật không may là mô hình trên có thể bị phá vỡ bởi các giới hạn tìm nạp lệnh (fetch boundaries), gây khó khăn trong việc dự đoán hoặc biên dịch chương trình. Vấn đề này làm hạn chế khả năng tìm nạp lệnh xuống thấp hơn 16byte mỗi chu kỳ clock và tỉ lệ giải mã xuống dưới 3 lệnh mỗi chu kỳ clock. Tìm nạp và giải mã lệnh và hai điểm còn yếu trong kiến trúc PM
Các đơn vị thực thi được bó gọn trong vòng 5 cổng thực thi, một thiết kế khá giống với P4. Cổng 0 và 1 giành cho ALU và các phép tính toán khác, trong khi cổng 2,3,4 dành cho các thao tác với bộ nhớ và tính toán địa chỉ. Các đơn vị thực thi được phân phối bằng nhau ở cổng 0 và 1 và rất nhiều vi lệnh có thể đi vào bất kỳ cổng nào trong hai cổng, khiến cho việc giữ cho hai cổng luôn làm việc dễ dàng hơn so với thiết kế trong P4
Các lệnh số nguyên SIMD khá hiệu quả với một ALU trên mỗi cổng trong hai cổng thực thi và độ trễ trên mỗi cái chỉ là một chu kỳ clock. Độ trễ dấu phảy động thì khá chậm. PM sinh ra ít vi lệnh hơn kiến trúc P4. Trong khi cả hai thiết kế cho phép 3 vi lệnh đi qua trong một chu kỳ, PM có nhiều lệnh được thực hiện hiệu quả hơn do số vi lệnh ít hơn. Việc giảm số vi lệnh một phần do cách hợp lệnh và một bộ cộng riêng cho con trỏ ngăn xếp. Không may là cơ chế hợp lệnh không làm việc với các thanh ghi XMM nên PM chỉ hiệu quả với các thanh ghi MMX và các thanh ghi dấu phảy động. PM có giới hạn đọc 3 thanh ghi trong một chu kỳ clock từ các file trong thanh ghi, đây dễ trở thành một nút cổ chai. PM có cơ chế dự đoán rẽ nhánh nâng cao, bộ đếm vòng lặp không hiệu quả đối với các bộ đệm rẽ nhánh rất nhỏ với chỉ 128 lối vào. Có lẽ khả năng dự đoán lệnh nhảy gián tiếp làm cho việc giảm kích cỡ của bộ đệm branch Target là cần thiết.PM không hỗ trợ các tập lệnh 64 bit
1.2, các thay đổi của intel
Mở rộng cửa sổ lệnh
Một trong những thay đổi quan trọng của Intel là việc mở rộng đáng kể cửa sổ lệnh của nhân P6 cho phép bộ xử lý theo dõi nhiều lệnh hơn các thế hệ trước của nó. Việc mở rộng này đồng nghĩa với việc kích thước của ROB và RS được gia tăng theo, một cách tổng quan thì các bộ đệm của bộ xử lý sâu hơn( ví dụ bộ đệm lưu trữ có thể được đào sâu để lưu trữ được nhiều hơn, và MOB(Memory Reorder Buffer) cũng được đào sâu hơn).
Việc gia tăng độ sâu của bộ đệm đòi hỏi kiến trúc P M phải gia tăng chiều dài của pipeline. PM cho thêm một vài giai đoạn vào trong pipeline của P 3, càng nhiều giai đoạn thì cửa sổ lệnh càng phải lớn.
Hợp các vi lệnh và các giai đoạn thêm vào trong pipeline
ROB và RS phải theo dõi các vi lệnh để chúng được đặt trở lại vào chương trình sau khi bị thực hiện lỗi. Để theo dõi một số lượng lớn các vi lệnh, P6 cần một số lượng lớn các cổng vào trong ROB và RS, gây tốn trasitor và tiêu hao nhiều năng lượng. PM cắt giảm số cổng vào ROB và RS bằng cách hợp nhất các vi lệnh có liên quan đến nhau và đưa chúng vào một cổng vào ROB và RS. Các lệnh hợp này vẫn phải được thi hành riêng rẽ như khi chúng chưa được hợp nhất
Intel cam kết rằng việc hợp các vi lệnh giúp tăng 5% hiệu năng trong các mã số nguyên và 9% trong các mã dấu phảy động.
Đơn vị thực hiện stack
PM còn giới thiệu một số thau đổi cho P3, một trong số đó là đơn vị thực thi stack cho việc xử lý cập nhật cho thanh ghi ESP.
Tóm lại PM có pipeline dài hơn, dự đoán rẽ nhánh tiến bộ hơn và cửa sổ lệnh được mở rộng hơn gợi nhớ đến kiến trúc P4 nhưng PM không tập trung một cách thái quá vào tốc độ đồng hồ như P4
2. Kết luận chung
Pentium M tiên phong cho sự khởi đầu mới và cải tiến căn bản của Intel .Nó được tối ưu hóa hiệu quả việc quản lý năng lượng,giúp kéo dài thời gian sử dụng pin cua laptop.Khả năng chạy với lượng điện tiêu thụ thấp trung bình và nhiệt độ thấp hơn nhiều so với bộ vi xử lý máy để bàn. Pentium M chạy ở tốc độ đồng hồ thấp hơn so với phiên bản máy tính xách tay của Pentium 4. nhưng với hiệu suất tương tự - 1.6 GHz Pentium M thường có thể đạt được hoặc thậm chí vượt qua hiệu suất của một số 2,4 GHz Pentium 4-M Pentium M 740 đã được thử nghiệm để thực hiện lên đến khoảng 7.400 MIPS và 3,9 GFLOPS(sử dụng SSE2)
Pentium M kết hợp thực hiện giữa nhân Pentium III và giao diện bus tương ứng của Pentium IV, hướng dẫn giải mã/phát hành được cải tiến, cải tiến dự đoán rẽ nhánh, hỗ trợ tập lệnh SSE2, cache lớn hơn, bộ nhớ cache thứ cấp ngốn năng lượng sử dụng phương pháp chỉ chuyển mạch trên phần được truy cập. mục đích chính đằng sau cache lớn là để giữ một phần kích thước hoàn chỉnh của nó để sẵn sàng cho việc xử lý ngay cả khi cache L2 đã được tắt gần hết, kích thước của nó mang lại sự cải thiện cho hiệu năng.
Một phương pháp tiết kiệm năng lượng nữa bao gồm tần số xung nhịp và điện áp trong nhân tự động biến đổi , cho phép Pentium M điều chỉnh xung nhịp khi hệ thống nhàn rỗi để tiết kiệm năng lượng, sử dụng công nghệ SpeedStep nâng cao (có nhiều trạng thái nghỉ hơn phiên bản cũ của SpeedStep). Với công nghệ này , một Pentium M 1.6GHz có thể điều chỉnh tốc độ clock lên đến 200MHz, 400 MHz, 600 MHz, 800 MHz, 1000 MHz, 1200 MHz, 1400 MHz and 1600 MHz. Các trạng thái clock tức thời này cho phép CPU điều chỉnh tốc độ cho phù hợp với từng hoàn cảnh một cách tốt hơn. Năng lượng yêu cầu của Pentium M vào khoảng từ 5watt khi nhàn rỗi tới 27 watt khi làm việc hết công suất, phù hợp với ngành sản xuất notebook vì cho phép bao hàm Pentium M vào một notebook nhỏ
Vi xử lý Pentium M có thiết kế điện nhiệt tối đa là 5-27W phụ thuộc vào từng mẫu, hướng đến sử dụng trong các dòng laptop
khái niêm kiên trúc thế hệ thứ 6, được gọi là hợp nhất lệnh giải mã. Trên pentium M, mỗi bộ giải mã nối hai lệnh đã giải mã thành một, Chúng chỉ được tách ra khi được thực thi, tại tầng thực thi. Pentium M cũnng giới thiệu công nghệ Speedstep nâng cao (Enhanced speedstep technology), công nghệ này là công nghệ có một vài cấu hình clock và điện áp khác nhau giửa LFM và HFMI.
Dựa trên nền tảng Pentium M thì Inel củng rất thành công khi tung ra nền tảngCentrino cho máy tính xách tay, các máy tính xách tay thời này sử dụng bộ xử lý Pentium M tên mã Banias (130nm) và Dothan 90nmvới mức điện năng thiêu thụ tối đa chỉ 27W. Nhưng một máy tính muốn đạt chuẩn Centrino ngoài bộ xử lý Pentium M thì những thành phần không thể thiếu đó là chipset mainbold và mạng không dây( wirless network interface).
Cũng giống như CPU Pentium 4, bộ vi xử lý Pentium M sử dụng Quad – Pumped Front side bus chạy ở 100 và 133 MHz, hoặc có hiệu quả ở 400 và 533MHz. Các CPU Pentium M có 32 KB hướng dẩn riêng biệt và lưu trử dử liệu (Hai lần lớn như trên Pentium 4 hoặc Pentium III), lớn 1 hoặc 2 MB Mức 2 bộ nhớ cache, và bào gồm cả chế độ ngủ sâu hơn. Pentium M chạy với xung clock thấp hơn so với phiên bản máy tính xách tay của Pentium 4 ứng với hiệu suất tương tự - 1,6GHz Pentium M thường có thể đạt được hoặc thậm chí vượt qua hiệu suất của 2,4 GHz Pentium 4.
Pentium M là một bộ xử lý hội tụ đầy đủ những ưu điểm của cả 2 dòng Pentium 4 và Pentium 4M, vì vậy máy tính xách tay sử dụng bộ vi xử lý này vừa có sức mạnh tính toán của Pentium 4 vừa tiết kiệm pin như Pentium 4M. Ngoài ra Intel còn một số dòng CPU cho máy tính xách tay khác, ví dụ như Celerong M có thể coi là một phiên bản “rút gọn” của Pentium M, với bộ xử lý này sức mạnh xử lý bị giảm đáng kể tuy nhiên giá thành của bộ xử lý loại này rẻ hơn so với Pentium M.
Tuy là Pentium III cải biên ( chữ M có nghĩa là “Modification” tức “cải biên” ) nhưng Pentium M đạt sức mạnh tương đương với Pentium 4-M có xung nhịp đồng hồ cao hơn 400MHz. Thí dụ như Pentium M 1.3GHz thì có sức mạnh tương đương như Pentium 4 M 1.7GHz . Ngoài ra Pentium M đã có những cải tiến đột phá như: khả năng trình diễn tương tự như Pentium 4 nhưng tốc độ xung nhịp thấp hơn, mức độ tiêu tốn năng lượng được giảm thiểu rất nhiều so với các chip di động đời trước.
Các file đính kèm theo tài liệu này:
- tieu_luan_vi_xu_ly_8854.docx