Tiểu luận Tìm hiểu kiến trúc vi xử lý Pentium M

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

 

 

docx38 trang | Chia sẻ: maiphuongdc | Lượt xem: 2252 | Lượt tải: 2download
Bạn đang xem trước 20 trang 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ừ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ận Vì 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ộ

Các file đính kèm theo tài liệu này:

  • docxtieu_luan_vi_xu_ly_8854.docx