Tải bản đầy đủ (.docx) (37 trang)

tiểu luận đề tài tìm hiểu kiến trúc vi xử lý pentium m

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (755.81 KB, 37 trang )

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 :
1. Nguyễn Thị Hiền
2. Ngô Ngọc Hà
3. Nguyễn Ngọc Hà
4. Phan Văn Hải
5. Trần Bá Hoàng
6. Trịnh Văn Hiếu
7. Đào Quang Hợp
8. Đỗ Vũ
1
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ý
2
- 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

3
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.
4
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ố:
5
- 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 process
technology
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
6
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
7
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
8
trên diện tích 3.36 inch(cỡ 82.79 mm
2
),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
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
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 mm
2
).
9
Hình 2.4.2-a: Dothan core
Hình 2.4.2-b: PM 730 core Dothan
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:
10
• 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.
11
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
12
Đơ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
13
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
14
• 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ì.
15
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ì
16
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
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ư
17
hình II.2.2-a: bộ nhớ cache và đơn vị tìm nạp
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
18
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
19
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.
• FPU: đơn vị dấu phảy động nơi những lệnh phức tạp được thi hành
20
Hình 5.2.2-a: Fetch Unit
• 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.
21
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
22
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ể
23
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).
24

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ợ
25

×