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
3.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
3.2 SSE (Single SIMD Extentions):
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.
3.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 đạ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
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