Tải bản đầy đủ (.pdf) (36 trang)

Tìm hiểu kiến trúc vi xử lý core i7 -990x

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 (1.53 MB, 36 trang )

HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
BÁO CÁO VI XỬ LÝ

CHỦ ĐỀ :

NHÓM 8

1


Tìm hiểu kiế n trúc VX L Core i7 -990X
I. Lời nói đầu.
Có thể nói công nghệ máy tính đã và đang thay đổi hàng giờ trong những năm gần đây. Đến thời điểm này
thật đáng kinh ngạc khi định luật tăng theo hàm mũ của mật độ linh kiện trên một chu vi điện tử cũng
đồng nghĩa với khả năng xử lý của máy tính vẫn đúng. Cả thế thới đang ở trong một cuộc chạy đua công
nghệ, càng ngày càng xuất hiện nhiều công ty sản xuất linh kiện máy tính. Trong số đó không thể không
kể đến Intel - một người khổng lồ trong lĩnh vực sản xuất thiết bị vi tính. Công ty này tỏ ra rất nổi trội
trong lĩnh vực sản xuất vi xử lí (CPU) của máy tính, theo thống kê Intel đang chiếm 4/5 thị phần vi xử lí
trên thế giới. Được thành lập năm 1968 tại Santa Clara, California, Hoa Kỳ, sau 3 năm Intel đã xuất ra thị
trường dòng vi xử lí đầu tiên: 4004 với tốc độ108KHz với 23.000 bóng bán dẫn. Cho đến là Core i7
990X - bộ vi xử lí nhanh nhất hành tinh với 6 nhân, tốc độ 3,46GHz, sử dụng công nghệ 32nm, đa nhân,
siêu phân luồng… Intel đang thử nghiệm và chuẩn bị cho ra thế hệ core i9 trong thời gian không xa…
Chúng ta hãy cùng tìm hiểu về kiến trúc vi xử lý intel core i7-990X qua bài dưới đây.
II. Giới thiệu chung về VXL core i7 và sự ra đời của VXL core i7-990X.


Giới thiệu chung về VXL core i7.
-Vào thời điểm ra đời (tháng 11-2008), Core i7 tên mã Bloomfield được mệnh danh là “CPU nhanh nhất
hành tinh”, với nhiều cải tiến và công nghệ vượt trội so với các thế hệ CPU từ Core 2 trở về trước.
- Core i7 hiện là đỉnh cao nhất trong dòng bộ vi xử lý hiện hành của Intel, nó gồm có các cache nhớ lớn
nhất, tốc độ clock nhanh nhất và cho mức hiệu suất thực cao nhất, cùng với đó là các công nghệ bộ vi xử lý


tiên tiến nhất, gồm có ảo hóa phần cứng, hỗ trợ 64 -bit, tự động overclock theo yêu cầu, công nghệ 32nm và
45nm…
-Intel Core i7 được sản xuất trên nền kiến trúc siêu vi Nehalem có thiết kế chip giống với thế hệ CPU
Core i5 Lynnfield dùng cho hệ thống máy bàn truyền thống. Chính ưu điểm tiết kiệm điện năng nổi bật
của CPU Lynnfield đã được Intel tận dụng trong phát triển vi xử lý Core i7. Tấm silicone Core i7 có diện
tích bề mặt 296 mm2, chứa tới 774 triệu transitor với 4 nhân (core) vật lý, mang những công nghệ đột phá
trong xử lý, như tích hợp sẵn mạch điều khiển bộ nhớ, sử dụng kiến trúc bộ nhớ đệm cache 3 cấp và hỗ trợ
công nghệ xử lý đa luồng Hyper-Threading.



Sự ra đời của VXL core i7-990X.
-Vào cuối năm 2010. Intel chính thức tung ra phiên bản (gần như là) cuối cùng của dòng CPU Core i7
socket LGA 1366, model Core i7-990X. Intel Core i7-990X là 1 phiên bản Extreme Edition với hệ số
2


nhân không khóa, có 6 nhân và được sản xuất trên tiến trình công nghệ 32nm. Core i7-990X sẽ thay thế
ngôi vương của Core i7-980X, được hãng xem là bộ xử lý có tốc độ nhanh nhất của má y tí nh đ ể b
àn từ
trước đến nay và lên làm vua của các CPU desktop trong thời điểm hiện tại.
-Bộ xử lý Core i7-990X có tốc độ xung nhịp 3,46GHz cao hơn core i7-980x( tốc độ 3.33GHz ), được
thiết kế dành cho các máy tính chơi gamevà các tính năng p xung cho ph p người dùng đẩy tốc độ xung
nhịp cao hơn trong những điều kiện nhất định. Tính năng này chủ yếu dành cho các game thủ hay những
chuyên viên đồ họa 3D và hỗ trợ tối ưu
giải trí đa phương tiện. . Bộ đệm thông minh của chip mới lên đến 12 MB . Chip cũng được trang bị tính
năng Turbo
Boost, tự động nâng xung từ 3.46 lên 3.6Ghz tùy vào mức độ tải của công việc và TDP của 990X sẽ
chiếm khoảng
130W trong toàn bộ hệ thống.Theo như trang tin BSN còn cho hay, khả năng p xung của vi xử lý này là

khá cao. Chỉ với tản nhiệt khí, người dùng đã có thể nâng lên ngưỡng 4.5Ghz một cách dễ dàng và đạt
5Ghz với hệ thống làm mát bằng chất lỏng.
- Bộ vi xử lý mới Core i7-990X được sản xuất dựa trên Gulftown công nghệ 32 nm cải tiến từ kiến trúc
Nehalem 45 nanometer, công nghệ được trình diễn lần đầu tiên cùng với bộ vi xử lý Core i7 nguyên thuỷ.
Dù cho công suất tiêu thụ điện năng khá thấp 95 vol và 130 watt nhưng ngay từ lần xuất hiện đầu tiên,
Core i7 sử dụng kiến trúc Nehalem đã trình diễn hết sức thuyết phục trong hầu hết các ph p thử, cho thấy
sức mạnh vượt trội so với tiền bối Core 2 của nó.
Kiến trúc Nehalem được xây dựng trên công nghệ 45 nm, cho ph p Intel sản xuất chip từ 2 đến 8 lõi.
Tiêu chuẩn kỹ thuật Core i7 được xây dựng trên kiến trúc hoàn toàn mới nên máy tính cũng cần sử dụng
bo mạch chủ mới.
Toàn bộ nền tảng sử dụng Socket 1366 thay vì 775. Core i7 tương thích với chuẩn Chipset X58 và bộ nhớ
RAM DDR3.

3


Ki ến trúc vi xử lý
Sơ đồ kiến tr úc và thành phầ n c hính c ủa VX L Inte l Core i7 990X

4


Đặc điểm kiến trúc của vi xử lý :
X t về cơ bản, kiến trúc Gulftown không có gì đặc biệt hơn Bloomfield trên nền kiến trúc Nehalem, chỉ
có số nhân xử lý và L3 cache tăng gấp 1,5 lần, cộng thêm với tập lệnh AES-NI giúp tăng cường khả năng
mã hoá / giải mã thêm cho gia đình Core ix. Tiến trình 32nm giúp Gulftown vẫn tương thích tốt với nền
tảng “cũ” Bloomfield và người dùng không phải bận tâm nếu đã sở hữu một hệ thống socket LGA 1366
trong tay.
Các thành phần chính bao gồm :
-


6 nhân xử lý.
Mỗi nhân có 32KB L1 instruction cache ( chỉ thị ), 32KB L1 data cache (dữ liệu) và 256KB L2 cache.
Ngoài ra còn tăng cường thêm 12MB L3 cache dùng chung trên các nhân.
Một mạch điều khiển bộ nhớ DDR3 Triple-Channel tích hợp ( IMC ).
Mạch điều khiển bus QPI (QuickPath Interconnect).
Bộ phận quản lí lượng tiêu thụ điện (PCU) và đồng hồ .
Đồ họa tích hợp ( nó nằm cùng bên trong với CPU, nhưng trên một khuôn riêng).

5


Mạch điều khiển bộ nhớ tích hợp ( IMC )
Trong kiến trúc Nehalem, Intel đã tích hợp luôn một chip điều khiển bộ nhớ trong bộ xử lý (BXL) giúp
tăng tốc độ giao tiếp với bộ nhớ, băng thông giao tiếp giữa BXL với các thành phần khác trong hệ thống.
Cùng với việc tích hợp thêm chip vào BXL thì số chân giao tiếp giữa BXL và bo mạch chủ (BMC) cũng
nhiều hơn trước đây. Chip điều khiển bộ nhớ bên trong các BXL dòng này hỗ trợ đến 3 kênh (triple
channel) thay vì chỉ hai kênh (dual channel) như thông thường giúp nâng băng thông giao tiếp bộ nhớ lên
đến 25,6GB/s và dung lượng RAM tối đa là 24GB DDR3.
Nhân thực thi ( Execution Core )
Sử dụng từ “Execution Core“ có vẻ chính xác hơn “Computing Core” vì nó không chỉ làm nhiệm vụ
tính toán mà còn giải mã câu lệnh. Ngoài ra, không phải tất cả các lệnh trong mã x58 đều là lệnh tính toán.
6


Phần lớn những thay đổi trong Core i7 so với Core 2 có thể được miêu tả như sau: “thêm vào một số, mở
rộng một số khác.” Những cải tiến này rất dễ giải thích: quy trình sản xuất mới tạo ra nhiều Transistor
hơn, vì thế không cần phải tiết kiệm Transistor làm gì. Còn bây giờ chúng ta sẽ tổng kết lại những thay đổi
có lợi nhất:
Bộ phận mã hóa ( Decoder )

Thay đổi lớn nhất trong bộ phận giải mã có liên quan đến việc cải tiến công nghệ Macrofusion: nó chỉ
hoạt động trong mode 32 bit, nhưng đã hỗ trợ tất cả các mode CPU, trong đó có mode 64-bit. Số lượng
cặp lệnh được mã hóa trong mỗi chu kỳ bằng công nghệ này cũng đã tăng lên. X t về lý thuyết thì bộ phận
mã hóa Core i7 sẽ đạt hiệu suất (5 câu lệnh mỗi chu kỳ) nhiều lần hơn so với trong Core 2.
Xử lý chu kỳ
Loop Stream Detector, được thiết kế để lưu lại chu kỳ ngắn thay vì tải lại các chu kỳ này từ bộ nhớ
Cache L1/L2, lần đầu xuất hiện trong các bộ xử lý Core 2. Trong Nehalem, bộ phận này hoạt động sau bộ
phận giải mã, vì thế nó có được lệnh đã giải mã. Ý tưởng này xuât phát từ bộ vi xử lí Pentium 4, Trace
Cache.

7


Dự đoán rẽ nhánh ( Branch Prediction )
Phần nhánh đã được tăng gấp đôi: giờ đây nó được chia làm 2 phần, một trong số đó có tốc độ dự báo
nhánh cao hơn (có thể nó đã copy lại bộ phận dự báo trong Core 2), trong khi phần còn lại thì chậm hơn,
nhưng có khả năng phân tích sâu sắc hơn kèm theo một Bộ đệm đủ lớn để dự đoán những nhánh mà phần
nhanh hơn bỏ qua.
Intel cũng hứa hẹn rằng Return Stack Buffer(phụ trách các địa chỉ trả về chức năng) sẽ được mở rộng
lên cả Renamed RSBnhư trong Penryn. Có điều trước đây bộ phận này vẫn thỉnh thoảng nhầm lẫn khi
thực hiện những thuật toán phức tạp, nhưng giờ thì không.
Thực hiện lệnh ( Instruction Execution )
Những bộ phận phụ trách việc xử lý câu lệnh gần như không có thay đổi gì so với Nehalem. Do đó ta có
thể đưa ra một kết luận đơn giản, nhưng không quá hiển nhiên rằng: trong những trường hợp Core 2 phải
đối phó với việc câu lệnh và dữ liệu đã được lấy về trước ( Prefetch ) , giải mã và dự báo nhánh, thì các
cải tiến đã nêu trong Core i7 không còn đem lại lợi thế nữa, và Core i7 sẽ có khả năng xử lý như Core 2.

8



Tuy nhiên cũng có một số cải tiến trong việc hỗ trợ Hyper-Threading. Ví dụ như Reorder Buffer sắp xếp
lại đã được mở rộng lên 128 vi lệnh, Reservation Station -- lên 36 lệnh (trước là 32). Và những bộ đệm
dữ liệu: khả năng tải tăng từ 32 lên 48, khả năng lưu trữ từ 20 lên 32. Lý do cũng rất đơn giản: để tăng số
lượng câu lệnh và dữ liệu trong hàng thực thi, do đó tăng khả năng thực thi chúng cùng một lúc.
Hệ thống Cache
Cách làm nước đôi này đã quá phổ biến trong Nehalem: các kỹ sư không chỉ tăng gấp đôi Bộ phận nhánh
( Branch Unit )mà còn cả TLB (Translation-Lookaside Buffer)nữa. Họ tiến hành cả hai việc theo cùng
một cách: Bộ phận ( Unit ) thừa hưởng từ Core 2 sẽ được giữ nguyên (được mở rộng thêm một chút), còn
cấp độ mới thứ hai được đưa vào trên TLB cũ – thậm chí nó còn lớn hơn (512 entry) và có nhiều chức
năng hơn (TLB L2 có thể dịch địa chỉ trang với bất kỳ kích thước nào ) . Còn hỗ trợ những trang có kích
thước bất kì mà hay được sử dụng trên bộ vi xử lý dành cho máy tính để bàn và tính năng này sẽ đi kèm
với những ứng dụng máy chủ nặng . Và TLB lớn thì rõ ràng là một bước tiến mới lên SMT.
Tuy nhiên, hầu hết các thay đổi đều được giới thiệu trong hệ thống Cache chính, cụ thể là chức năng
tương tác L1-L2 và cache L3 thêm vào Nehalem. Đầu tiên, L2 vẫn thuộc về một nhân nhất định chứ
không chia sẻ. Còn L3 được chia sẻ giữa tất cả các nhân. Thứ hai, Intel đã điều chỉnh một chút đối với
thời gian trễ của L1, còn độ trễ L2 -- L1 thì cao hơn một chu kỳ so với trong Core 2, còn thời gian trễ của
L2 thì thấp hơn đến 1.5 lần.
Nhưng tại đây chúng ta chủ yếu quan tâm đến L3. Cũng như L2 trong Core 2, đây là một Cache chia sẻ
động. Hơn nữa, nó cũng mang tính bao quát hơn : các dữ liệu trong L1/L2 phải xuất hiện trong cả L3.
Mỗi dòng trong Cache L3 chứa các bit hợp lệ trong nhân ( dựa theo số nhân vật lý), chúng biểu hiện
việc dữ liệu L1/L2 gốc được chứa trong nhân nào. Vì thế không cần phải dò tìm từng nhân.
Intel cũng có một ý tưởng tương tự về cấu trúc Cache tối ưu: tốc độ quan trọng hơn dung lượng . Việc này
có thể liên quan đến thực tế là họ có rất nhiều lợi thế trong việc thiết kế Cache với dung lượng lớn vì công
nghệ chế tạo Transistor là 32nm. Tuy nhiên hơi thất vọng một chút về việc Cache L3 trong Core i7
không hoạt động theo tốc độ xung nhịp của bộ vi xử lý, mà theo một tốc độ cố định .

9


Giao thức truy xuất dữ liệu trong cache của các nhân cũng có sự chuyển biến thành giao thức MESIF

(Modified, Exclusive, Shared, Invalid and Forward) giúp giảm bớt tần suất truy cập cache của các nhân để
nâng cao hiệu quả tính toán song song.
QPI thay thế cho QPB
Tiêu đề này nghe có vẻ lạ tai nhưng thực ra lại rất phù hợp: QPIchữ viết tắt của Bus bộ vi xử lý mới của
Intel (QuickPath Interconnect)chỉ khác với Bus cũ QPB (Quad Pumped Bus)một chữ cái hay còn
được gọi là FSB .
Vậy thì QPI là gì? Về mặt kỹ thuật thì đây là một Bus 20-bit 2 chiều với phương thức truyền dữ liệu từ
điểm-tới-điểm ( Point-to-Point ), mỗi mỗi hướng là mang dữ liệu 16-bit, 4 bit còn lại dùng cho việc sửa
lỗi và giao thức. Với khả năng xử lý 6.4 tỉ giao dịch mỗi giây, QPI có tốc độ trao đổi dữ liệu lên
12.8 GB/giây theo mỗi hướng, tổng cộng là 25.6 GB/giây. Vì thế đây là Bus xử lý nhanh nhất (1600-MHz
QPB có tổng băng thông là 12.8 GB/giây, AMD HyperTransport 3.0 -- 24 GB/giây). Tuy nhiên, phiên bản
QPI nhanh nhất hiện mới chỉ dành cho Core i7 Extreme Edition. Còn các bộ xử lý Core i7 bình thường thì
chậm hơn một chút với băng thông là 4.8 tỉ giao dịch mỗi chu kỳ.

Lý do ở đây là: lượng băng thông chỉ dùng như vậy vì trong hầu hết thời gian sử dụng bộ vi xử lý để bàn,
thì Bus QPI chỉ dùng để kết nối với Chipset mà thôi , bởi khi đó mạch điều khiển bộ nhớ đã được tích hợp
vào bộ xử lý. (Giải pháp này chỉ hữu ích khi chipset cung cấp thật nhiều đường truyền PCI Express 2.0,
giống
như
trong
chipset
Intel
X58
dành
cho
Nehalem.)

10



Vì thế rõ ràng là QPI được thiết kế dành cho những ứng dụng hoàn toàn khác mà bạn có thể xem trong
hình trên. Những bộ xử lý với cấu trúc mới được thiết kế riêng cho máy chủ sẽ chứa một số mạch điều
khiển QPI để kết nối trực tiếp với nhau nhằm thực thi tối ưu cấu trúc bộ nhớ NUMA (Truy cập bộ nhớ
không đồng nhất – Non-Uniform Memory Access ). Cách làm này được áp dụng rộng rãi trong nhiều nền
tảng máy chủ .
Do đó, các bản Core i7 dành cho máy chủ cũng tương tự với AMD Opteron về cấu trúc hình học
Topology. Điều này cũng tốt thôi, bởi các nhà thiết kế phần mềm máy chủ cuối cùng cũng có được câu trả
lời cho câu hỏi rằng cần phải tối ưu hóa ứng dụng của họ cho cấu trúc bộ nhớ nào. Tuy nhiên điều này chỉ
đúng đối với máy chủ. Còn với máy tính để bàn thông thƣờng, bạn sẽ khó mà nhận ra lợi thế nào của
QPI.

Quản lý điện năng
Nehalem đã quá chú ý đến việc quản lý điện năng như thể Intel là người đầu tiên nhìn thấy trước cuộc
khủng hoảng kinh tế vậy. Cấu trúc này thực hiện việc quản lý điện năng theo cách truyền thống: toàn bộ
cấu trúc quản lý điện được đưa vào một bộ phận riêng gọi là PCU (Bộ phận Quản lý Điện năng – Power
Control Unit ). Nó có vai trò như một bộ xử lý thô sơ bên trong một bộ xử lý.

Và bộ xử lý Mini này hỗ trợ một quy trình quản lý phức tạp hơn nhiều so với các bộ xử lý khác của Intel:
xung nhịp và điện áp của mỗi nhân được điều khiển riêng biệt dựa trên thông tin về nhiệt độ và lượng điện
tiêu thụ. Do đó mỗi nhân có thể chuyển riêng sang mức tiêu thụ điện thấp. Mạch điều khiển bộ nhớ và Bus
QPI sẽ chuyển sang chế độ điện năng thấp khi tất cả các nhân đều nghỉ.
Chuẩn mã hóa AES-NI
Cuối cùng, một bổ sung khác đáng chú ý là AES-NI - chuẩn mã hóa nâng cao dựa trên phần cứng của
Intel. Xuất hiện trước đây trên các bộ xử lý Clarkdale Core i5 và chưa có được màn trình diễn ấn tượng
cho lắm, nhưng khi tiến lên Core i7-980X, AES-NI đã phần nào khẳng định được giá trị và các tiềm năng
của
mình.
Đương
nhiên
-990X

cũng
sẽ
thừa
hưởng
điều
đó.

11


Cụ thể AES vốn là một giao thức mã hóa khá phổ biến được sử dụng trong khá nhiều ứng dụng hiện nay.
Intel, vốn là luôn là kẻ đi đầu trong việc bổ sung các tập lệnh mới hỗ trợ việc tính toán và mã hóa tốt hơn,
đã bổ sung tập lệnh AES-NI vào các sản phẩm Clarkdale và Gulftown trong lần ra mắt này với 6 chỉ thị
bổ sung. Theo mô tả , tốc độ tính toán và mã hóa của các CPU có tập lệnh này sẽ nhanh hơn gấp nhiều
lần, thậm chí là hàng chục lần với các phần mềm hỗ trợ AES hiện nay: n n và giải n n, mã hóa ổ cứng,
thu phát Wi-Fi, trò chuyện VoIP…

Ki ến trúc tập lệnh c ủa Core i7 -990X
Core i7-990X bao gồm các tập lệnh như sau:









MMX instruction set
SSE

SSE2
SSE3
Supplemental SSE3
SSE4.1
SSE4.2
AES instructions

0. MMX Instructions
Tập lệnh MMX làm việc trên các toán hạng nguyên kiểu byte, word, doubleword (kiểu packed) chứa trong
bộ nhớ, trong các thanh ghi MMX hoặc trong các thanh ghi tổng quát.

12


Tập lệnh MMX chỉ có thể được thực thi trên các bộ xử lý Intel 64 hoặc IA-32 có hỗ trợ công nghệ
MMX.
1. MMX Data Transfer Instructions (Tập lệnh dịch chuyển dữ liệu)
Tập lệnh dịch chuyển dữ liệu có tác dụng di dời các toán hạng Dword và Qword giữa các thanh ghi MMX
với nhau và giữa các thanh ghi MMX với bộ nhớ
-

MOVD: Dịch chuyển Dword
MOVQ: Dịch chuyển Qword
2. MMX Conversion Instructions (Tập lệnh chuyển đổi )
Bao gồm các lệnh chuyển đổi bytes, word và Dwords (ở dạng pack và unpack)
- PACKSSWB: Chuyển đổi các words (dạng pack) sang dạng bytes bão hòa có dấu
- PACKSSDW: Chuyển đổi các Dwords (dạng pack) sang dạng words bão hòa có dấu
- Các lệnh khác: PUNPCKHBW, PUNPCKHWD, PUNPCKHDQ, PUNPCKLBW,
PUNPCKLWD, PUNPCKLDQ
3. MMX Packed Arithmetic Instructions (Tập lệnh tính toán số học)

Tập lệnh tính toán số học (dạng packed) biểu diễn việc tính toán số nguyên byte, word và Dword (dạng
packed)
- PADDB: Cộng các số nguyên byte (dạng packed)
- PADDW: Cộng các số nguyên word (dạng packed)
- Các lệnh khác: PADDSB, PADDSW, PADDUSB, PADDUSW, PSUBB, PSUBW,
PSUBD, PSUBD, PSUBSW, PSUBUSB, PSUBUSW, PMULHW,
PMULLW, PMADDWD

4. MMX Comparison Instructions (Tập lệnh so sánh)
Tập lệnh so sánh có tác dụng so sánh các bytes, words hoặc Dwords (dạng packed)
- PCMPEQB: So sánh bằng nhau giữa các bytes (dạng packed)
- PCMPEQW: So sánh bằng nhau giữa các words (dạng packed)
- PCMPEQD: So sánh bằng nhau giữa các Dword (dạng packed)
- PCMPGTB: So sánh lớn hơn giữa các số nguyên byte có dấu (dạng packed)
- PCMPGTW: So sánh lớn hơn giữa các số nguyên word có dấu (dạng packed)
- PCMPGTD: So sánh lớn hơn giữa các số nguyên Dword có dấu (dạng packed)
5. MMX Logical Instructions (Tập lệnh logic)
Tập lệnh logic biểu diễn các ph p toán AND, AND NOT, OR and XOR
- PAND: Ph p logic AND theo bit
- PANDN: Ph p logic AND NOT theo bit
- POR: Ph p logic OR theo bit
- PXOR: Ph p logic XOR theo bit

13


6. MMX Shift and Rotate Instructions (Tập lệnh dịch và quay)
Tập lệnh dịch và quay có tác dụng dịch và quay các bytes, words hoặc Dwords, hoặc Qword trong các
toán hạng 64-bit
- PSLLW: Ph p dịch trái logic các words (dạng packed)

- PSLLD: Ph p dịch trái logic các Dwords (dạng packed)
- PSLLQ: Ph p dịch trái logic các Qwords (dạng packed)
- PSRLW: Ph p dịch phải logic các words (dạng packed)
- PSRLD: Ph p dịch phải logic các Dwords (dạng packed)
- PSRLQ: Ph p dịch phải logic các Qwords (dạng packed)
-

PSRAW: Ph p dịch phải số học các words (dạng packed)
PSRAD: Ph p dịch phải số học các Dwords (dạng packed)

7. MMX State Management Instructions (Tập lệnh quản lý trạng thái)
Lệnh EMMS có tác dụng xóa sạch trạng thái MMX của thanh ghi MMX
EMMS: Xóa sạch trạng thái MMX

1. SSE Instructions

-

Tập lệnh SSE chỉ có thể thực thi trên các bộ xử lý Intel 64 và IA-32 có hỗ trợ phần mở rộng SSE.
1.1. SSE SIMD Single-Precision Floating-Point Instructions
1.1.1.
SSE Data Transfer Instructions
Tập lệnh chuyển dữ liệu của SSE cho ph p di chuyển các toán hạng thực độ chính xác đơn kiểu packed/
vô hướng giữa các thanh ghi XMM hoặc giữa thanh ghi XMM và bộ nhớ
MOVAPS: Di chuyển bốn giá trị thực độ chính xác đơn (packed) giữa các thanh ghi XMM hoặc giữa
thanh ghi XMM và bộ nhớ
Các lệnh còn lại: MOVUPS, MOVHPS, MOVHLPS, MOVLPS, MOVLHPS, MOVMSKPS, MOVSS
SSE Packed Arithmetic Instructions
Các lệnh số học (kiểu packed) của SSE cho ph p biểu diễn các toán tử số học packed/ vô hướng trên các
toán hạng thực độ chính xác đơn packed/ vô hướng.

ADDPS: Cộng các giá trị thực độ chính xác đơn (kiểu packed)
ADDSS: Cộng các giá trị thực độ chính xác đơn (kiểu vô hướng)
Các lệnh khác: SUBPS, SUBSS, MULPS, MULSS, DIVPS, DIVSS, RCPPS, RCPSS, SQRTPS, SQRTSS,
RSQRTPS, RSQRTSS, MAXPS, MAXSS, MINPS, MINSS
1.1.2.

-

SSE Comparitsion Instructions
Các lệnh so sánh của SSE giúp so sánh các toán hạng thực độ chính xác đơn kiểu packed và kiểu vô hướng
với nhau.
CMPPS: So sánh các giá trị thực độ chính xác đơn (kiểu packed)
CMPSS: So sánh các giá trị thực độ chính xác đơn (kiểu vô hướng)
Các lệnh khác: COMISS, UCOMISS
1.1.3.

-

14


SSE Logical Instructions
Các lệnh logic của SSE biểu diễn được các toán tử AND, AND NOT, OR và XOR x t tương ứng theo từng
bit trên các toán hạng thực độ chính xác đơn (kiểu packed)
ANDPS: Biểu diễn ph p AND logic theo từng bit của các giá trị thực độ chính xác đơn (kiểu packed)
Các lệnh khác: ANDNPS, ORPS, XORPS
1.1.4.

-


SSE Shuffle and Unpack Instructions
Các lệnh xáo trộn và tháo gỡ của SSE giúp trộn lẫn hoặc xen các giá trị thực độ chính xác đơn vào các toán
hạng thực độ chính xác đơn (kiểu packed)
SHUFPS: Xáo trộn giá trị trong các toán hạng thực độ chính xác đơn (kiểu packed)
Các lệnh khác: UNPCKHPS, UNPCKLPS
1.1.5.

-

SSE Conversion Instructions
Các lệnh chuyển đổi của SSE giúp chuyển đổi các số nguyên dword theo kiểu packed/ individual sang các
giá trị thực độ chính xác đơn kiểu packed/ scalar và vice versa.
1.1.6.

-

CVTPI2PS: Chuyển đổi các giá trị nguyên dword (kiểu packed) sang các giá trị thực độ chính xác đơn
(kiểu packed)
Các lệnh khác: CVTSI2SS, CVTPS2PI, CVTTPS2PI, CVTSS2SI, CVTTSS2SI
1.2. SSE MXCSR State Management Instructions

-

Các lệnh quản lý trạng thái MXCSR cho ph p lưu lại và khôi phục trạng thái của thanh ghi trạng
thái và thanh ghi điều khiển MXCSR.
LDMXCSR: Nạp thanh ghi MXCSR
STMXCSR: Lưu lại trạng thái của thanh ghi MXCSR
1.3. SSE 64-Bit SIMD Integer Instructions

-


Các lệnh số nguyên SIMD 64-bit của SSE biểu diễn toán tử cộng trên các byte, word, hoặc dword (kiểu
packed) được chứa trong các thanh ghi MMX
PAVGB: Tính toán giá trị trung bình của các số nguyên byte không dấu (kiểu packed)
PAVGW: Tính toán giá trị trung bình của các giá trị nguyên word không dâu (kiểu packed)
Các lệnh khác: PEXTRW, PINSRW, PMAXUB, PMAXSW, PMINUB, PMINSW, PMOVMSKB,
PMULHUW, PSADBW, PSHUFW
1.4. SSE Cacheability Control, Prefetch, and Instruction Ordering Instructions

-

Các lệnh điều khiển “cacheability” cung cấp khả năng điều khiển việc lưu trữ dữ liệu không phụ thuộc
thời gian khi lưu trữ dữ liệu từ các thanh ghi MMX và XMM vào bộ nhớ.
MASKMOVQ: Lưu trữ “non- temporal” các byte được chọn từ thanh ghi MMX vào bộ nhớ.
Các lệnh khác: MOVNTQ, MOVNTPS, PREFETCHh, SFENCE

2. SSE2 Instructions
Tập lệnh SSE2 chỉ có thể được thực thi trên các bộ xử lý Intel 64 và IA-32 có hỗ trợ thành phần mở rộng
SSE2

15


2.1. SSE2 Packed and Scalar Double-Precision Floating-Point Instructions

-

Các lệnh thao tác trên số thực độ chính xác k p (kiểu đóng gói và vô hướng) được phân loại thành các nhóm
dưới đây:
Các lệnh dịch chuyển dữ liệu

Các lệnh tính toán số học
Các lệnh so sánh
Các lệnh chuyển đổi
Các lệnh logic
Các lệnh xáo trộn toán hạng thực độ chính xác k p

SSE2 Data Movement Instructions
Các lệnh dịch chuyển dữ liệu giúp di chuyển dữ liệu thực độ chính xác k p giữa các thanh ghi XMM và
giữa các thanh ghi XMM và bộ nhớ.
- MOVAPD: Chuyển 2 giá trị thực độ chính xác k p sắp thẳng hàng giữa các thanh ghi XMM hoặc giữa
thanh ghi XMM và bộ nhớ.
- MOVUPD: Chuyển 2 giá trị thực độ chính xác k p không sắp thẳng hàng giữa các thanh ghi XMM
hoặc giữa thanh ghi XMM và bộ nhớ.
2.1.1.

16


- MOVHPD (Chuyển giá trị thực độ chính xác k p ở mức cao): Chuyển toán hạng thực độ chính xác k p
64-bit từ bộ nhớ tới Qword của một thanh ghi XMM hoặc vice versa.
- MOVLPD (Chuyển giá trị thực độ chính xác k p ở mức thấp): Chuyển toán hạng thực độ chính xác k p
64-bit từ bộ nhớ tới Qword ở mức thấp của một thanh ghi XMM hoặc vice versa.
- MOVMSKPD: Rút bộ lọc dấu từ 2 giá trị thực độ chính xác k p.
- MOVSD: Chuyển giá trị vô hướng thực độ chính xác k p giữa các thanh ghi XMM hoặc giữa thanh ghi
XMM và bộ nhớ.
SSE2 Packed Arithmetic Instructions
Các lệnh số học biểu diễn ph p cộng, trừ, nhân, chia, căn bậc hai, và các toán hạng lớn nhất/ nhỏ nhất trong
các toán hạng thực độ chính xác k p kiểu packed và kiểu vô hướng.
2.1.2.


Cộng các giá trị thực độ chính xác k p (kiểu packed)
Cộng các giá thực độ chính xác k p (kiểu vô hướng)
Trừ các giá trị thực độ chính xác k p (kiểu packed)
Trừ các giá trị thực độ chính xác k p (kiểu vô hướng)

-

ADDPD:
ADDSD:
SUBPD:
SUBSD:

-

MULPD: Nhân các giá trị thực độ chính xác k p (kiểu packed)
MULSD: Nhân các giá trị thực độ chính xác k p (kiểu vô hướng)
DIVPD: Chia các giá trị thực độ chính xác k p (kiểu packed)
DIVSD: Chia các giá trị thực độc hính xác k p (kiểu vô hướng)
Tương tự còn một số lệnh nữa: + SQRTPD, SQRTSD
+ MAXPD, MAXSD
+ MINPD, MINSD
SSE2 Logical Instructions
Các lệnh logic của SSE2 biểu diễn các toán tử AND, AND NOT, OR, và XOR trên các giá trị thực độ chính
xác đơn kiểu packed.
ANDPD: Biểu diễn ph p AND theo từng cặp bit đối với các giá trị thực độ chính xác k p kiểu packed
ANDNPD: Biểu diễn ph p AND NOT theo từng bit đối với các giá trị thực độ chính xác k p kiểu packed
Tương tự, cũng có những lệnh: ORPD, XORPD
2.1.3.

-


SSE2 Compare Instructions
Các lệnh so sánh của SSE2 so sánh các giá trị thực độ chính xác k p kiểu packed và kiểu vô hướng. Sau đó,
trả lại kết quả so sánh hoặc về toán hạng đích, hoặc về thanh ghi EFLAGS.
CMPPD: So sánh các giá trị thực độ chính xác k p kiểu packed
CMPSD: So sánh các giá trị thực độ chính xác k p kiểu vô hướng
COMISD: Biểu diễn sự so sánh theo thứ tự của các giá trị độ chính xác k p kiểu vô hướng và thiết lập các
cờ trong thanh ghi EFLAGS
UCOMISD: Biểu diễn sự so sánh không theo thứ tự của các giá trị độ chính xác k p kiểu vô hướng và thiết
lập các cờ trong thanh ghi EFLAGS
2.1.4.

-

17


SSE2 Shuffle and Unpack Instructions
Các lệnh xáo trộn và tháo gỡ cho ph p trộn lẫn hoặc xen các giá trị thực độ chính xác k p vào trong các toán
hạng thực độ chính xác k p kiểu packed.
SHUFPD: Trộn lẫn các giá trị trong các toán hạng thực độ chính xác k p kiểu packed.
UNPCKHPD: Tháo gỡ và xen các giá trị mức cao từ hai toán toán hạng thực độ chính xác k p
2.1.5.

-

SSE2 Conversion Instructions
Các lệnh chuyển đổi của SSE2 cho ph p chuyển đổi các số nguyên Dword kiểu packed/kiểu individual sang
các giá trị thực độ chính xác k p kiểu vô hướng/ packed và ngược lại. Chúng cũng chuyển đổi giữa các giá
trị thực độ chính xác k p/ độ chính xác đơn, kiểu packed/ vô hướng.

CVTPD2PI: Chuyển đổi các giá trị thực độ chính xác k p sang số nguyên Dword (packed)
Tương tự ta có các lệnh chuyển đổi:
(CVTTPD2PI, CVTPI2PD, CVTPD2DQ, CVTTPD2DQ, CVTDQ2PD, CVTPS2PD, CVTPD2PS,
CVTSS2SD, CVTSD2SS, CVTSD2SI, CVTTSD2SI, CVTSI2SD)
2.1.6.

-

2.2. SSE2 Packed Single-Precision Floating-Point Instructions

-

-

Các lệnh giá trị thực độ chính xác đơn (kiểu packed) của SSE2 biểu diễn sự chuyển đổi trên các toán hạng
thực độ chính xác đơn và các toán hạng nguyên.
CVTDQ2PS: Chuyển đổi các giá trị nguyên dword (kiểu packed) thành các giá trị thực độ chính xác đơn
(kiểu packed)
CVTPS2DQ: Chuyển đổi các giá trị thực đội chính xác đơn (kiểu packed) sang các giá trị nguyên dword
(packed)
CVTTPS2DQ: Chuyển đổi với việc cắt ngắn giá trị thực đội chính xác đơn (packed) thành số nguyên
dword (packed).

2.3. SSE2 128-Bit SIMD Integer Instructions

-

Các lệnh số nguyên SIMD của SEE2 biểu diễn thao tác cộng trên các word, dword, qword (kiểu packed)
chứa trong các thanh ghi XMM và MMX.
MOVDQA: Di chuyển Double Qword được xếp thẳng hàng

MOVDQU: Di chuyển Double Qword không xếp thẳng hàng
Còn một số lệnh khác như:
(MOVQ2DQ, MOVDQ2Q, PMULUDQ, PADDQ, PSUBQ, PSHUFLW, PSHUFHW, PSHUFD,
PSLLDQ, PSRLDQ, PUNPCKHQDQ, PUNPCKLQDQ)

2.4. SSE2 Cacheability Control and Ordering Instructions

-

Tập lệnh điều khiển “cacheability” cung cấp thêm các thao tác cho sự lưu trữ dữ liệu không phụ thuộc thời
gian khi lưu trữ dữ liệu từ các thanh ghi XMM vào bộ nhớ. LFENCE và MFENCE cung cấp thêm sự điều
khiển sắp xếp thứ tự các quá trình lưu trữ.
Các lệnh thành phần: CLFLUSH, LFENCE, MFENCE, PAUSE, MASKMOVDQU, MOVNTPD,
MOVNTDQ, MOVNTI

18


3. SSE3 Instructions
Tập lệnh SS3 chỉ có thể được thực thi trên các bộ xử lý Intel 64 và IA-32 được hỗ trợ các thành phần mở
rộng cho SS3.
3.1. SSE3 x87-FP Integer Conversion Instruction

FISTTP: thực thi căn bản giống FISTP nhưng lệnh này sử dụng thao tác cắt dữ liệu, bất chấp phương
thức làm tròn đã được chỉ định trong word điều khiển số thực
3.2. SSE3 Specialized 128-bit Unaligned Data Load Instruction

LDDQU: 128-bit đặc biệt được thiết kế nạp không xếp thẳng hàng để tránh sự chia cắt “cache line”
3.3. SSE3 SIMD Floating-Point Packed ADD/SUB Instructions


-

ADDSUBPS: Biểu diễn ph p cộng độ chính xác đơn trên cặp thứ 2 và thứ 4 của các thành phần dữ liệu
không đi kèm toán hạng; ph p trừ độ chính xác đơn thực hiện trên cặp thứ nhất và thứ ba.
ADDSUBPD: Biểu diễn ph p cộng độ chính xác k p trên cặp thứ hai của Qword, và ph p trừ độ chính xác
k p trên cặp đầu tiên.
3.4. SSE3 SIMD Floating-Point Horizontal ADD/SUB Instructions

-

-

HADDPS: Biểu diễn ph p cộng độ chính xác đơn trên các thành phần dữ liệu kề nhau. Thành phần dữ
liệu đầu tiên của kết quả thu được bởi ph p cộng các thành phần thứ nhất và thứ hai của toán hạng đầu
tiên. Thành phần dữ liệu thứ hai thu được bởi ph p cộng các thành phần thứ ba và thứ tư của toán hạng
đầu tiên. Thành phần thứ ba thu được bởi ph p cộng các thành
phần thứ nhất và thứ hai của toán hạng thứ hai. Và thành phần thứ tư thu được bởi ph p cộng các thành
phần thứ ba và thứ tư của toán hạng thứ hai
Các lệnh còn lại: HSUBPS, HADDPD, HSUBPD
3.5. SSE3 SIMD Floating-Point LOAD/MOVE/DUPLICATE Instructions

-

MOVSHDUP: Nạp/ di chuyển 128 bits, sao ch p các thành phần dữ liệu 32-bit thứ hai và thứ tư.
Các lệnh còn lại: MOVSLDUP, MOVDDUP
3.6. SSE3 Agent Synchronization Instructions

-

MONITOR: Cài đặt phạm vi địa chỉ được sử dụng để có thể giám sát không gian lưu trữ “write-back” (lưu

lại kết quả)
Lệnh còn lại: MWAIT

4. S-SSE3 Instructions
4.1. Horizontal Addition/ Subtraction (Cộng/ trừ theo phƣơng ngang)

-

PHADDW: Cộng hai số nguyên 16-bit có dấu, liền kề theo phương ngang từ các toán hạng nguồn và toán
hạng đích. Sau đó đưa các kết quả 16-bit vào toán hạng đích.
PHADDSW: Cộng hai số nguyên 16-bit có dấu, liền kề theo phương ngang từ các toán hạng nguồn và toán
hạng đích và đưa các kết quả 16-bit bão hòa, có dấu vào toán hạng đích.

19


-

-

-

PHADDD: Cộng hai số nguyên 32-bit có dấu, liền kề từ các toán hạng nguồn và toán hạng đích và đưa các
kết quả 32-bit vào toán hạng đích.
PHSUBW: Biểu thị theo phương ngang ph p trừ mỗi cặp liền kề các số nguyên 16-bit có dấu bằng thao tác
trừ word có ý nghĩa nhiều nhất từ word ít ý nghĩa nhất của mỗi cặp trong toán hạng nguồn và toán hạng
đích. Các kết quả 16-bit có dấu được gửi và được ghi vào trong toán hạng nguồn.
PHSUBSW: Biểu thị theo phương ngang ph p trừ mỗi cặp liền kề các số nguyên 16-bit có dấu bằng thao
tác trừ word có ý nghĩa nhiều nhất từ word ít có ý nghĩa nhất của mỗi cặp trong toán hạng nguồn và toán
hạng đích. Các kết quả 16-bit bão hòa, có dấu được gửi và được ghi vào toán hạng đích.


PHSUBD: Biểu thị theo phương ngang ph p trừ mỗi cặp liền kề các số nguyên 32-bit bằng thao tác trừ
Dword có ý nghĩa nhiều nhất từ Dword ít có ý nghĩa nhất của mỗi cặp toán hạng nguồn và toán hạng đích.
Các kết quả 32-bit có dấu được gửi và được ghi vào toán hạng đích.

4.2. Packed Absolute Values (Tính toán giá trị tuyệt đối)

-

-

PABSB: Tính toán giá trị tuyệt đối của mỗi thành phần dữ liệu byte có dấu.
PABSW: Tính toán giá trị tuyệt đối của mỗi thành phần dữ liệu 16-bit có dấu.
PABSD: Tính toán giá trị tuyệt đối của mỗi thành phần dữ liệu 32-bit có dấu.
4.3. Multiply and Add Packed Signed and Unsigned Bytes
(Nhân/ Cộng các byte có dấu và không dấu kiểu packed)
PMADDUBSW: Nhân mỗi giá trị byte không dấu với giá trị byte có dấu tương ứng để đưa ra giá trị trung
gian, giá trị nguyên có dấu 16-bit. Mỗi cặp liền kề giá trị có dấu 16-bit được cộng theo phương ngang. Các
kết quả 16-bit bão hòa, có dấu được đưa vào toán hạng đích.
4.4. Packed Multiply High with Round and Scale

-

PMULHRSW: Nhân theo chiều dọc mỗi số nguyên 16-bit có dấu từ toán hạng đích với một số nguyên 16bit có dấu tương ứng trong toán hạng nguồn, đưa ra giá trị trung gian, các giá trị nguyên 32-bit có dấu. Mỗi
số nguyên 32-bit trung gian bị cắt bỏ 18 bit có ý nghĩa nhất. Thao tác làm tròn luôn được biểu diễn bằng
việc thêm 1 đơn vị vào bit ít có ý nghĩa nhất trong 18 bit kết quả. Kết quả sau cùng thu được bằng cách lựa

20



chọn nhóm 16 bits trung gian bên phải của bit có ý nghĩa nhất trong mỗi kết quả 18-bit trung gian. Kết quả
này được đưa vào toán hạng đích.
4.5. Packed Shuffle Bytes (Xáo trộn các byte – kiểu packed)

-

FSHUFB: Hoán vị mỗi byte theo bộ lọc điều khiển trộn. Ba hoặc bốn bít ít có ý nghĩa nhất trong byte điều
khiển trộn của bộ lọc điều khiển sẽ tổ chức thành một chỉ mục trộn. Bộ lọc trộn không hề bị ảnh hưởng. Nếu
bit có ý nghĩa nhất (bit 7) của byte điều khiển trộn được thiết lập (“set”), hằng số 0 sẽ được ghi vào byte kết
quả.
4.6. Packed Sign (Đổi dấu giá trị nguyên - packed)

-

PSIGNB / W / D: Phủ định mỗi thành phần số nguyên có dấu của toán hạng đích nếu dấu của thành phần
dữ liệu tương ứng trong toán hạng nguồn nhỏ hơn 0 (dấu âm).
4.7. Packed Align Right (Sắp thẳng hàng các giá trị - packed)

-

PALIGNR: Toán hạng nguồn được gắn vào sau toán hạng đích, thiết lập giá trị trung gian có độ dài gấp 2
lần độ dài một toán hạng. Kết quả được rút từ giá trị trung gian này, đưa vào toán hạng đích bằng thao tác
lựa chọn giá trị 128 bit hoặc 64 bit được sắp thẳng hàng bên phải của byte “offset” – đã được chỉ định bởi
giá trị trung gian.

5. SSE4.1 Instructions
SSE4.1 gồm 47 tập lệnh, có mục tiêu giúp cải thiện hiệu năng của phương tiện truyền thông (media), xử lý
ảnh, công nghệ 3D. SSE4.1 thêm vào các lệnh giúp cải thiện các thao tác vector và giúp tăng đáng kể sự
hỗ trợ cho các thao tác tính toán trên “Double word” (Dword). Sau đây sẽ là các tính năng cụ thể của
SSE4.1

5.1. Dword Multiply Instructions (Các lệnh nhân Dword)

-

PMULLD: Trả lại bốn giá trị 32-bit mức thấp từ các kết quả 64-bit của các ph p nhân số nguyên 32-bit
có dấu.
PMULDQ: Trả lại hai kết quả có dấu 64-bit của các ph p nhân số nguyên 32-bit có dấu.
Các mô tả dưới đây là các thao tác chung nhất về việc nhân số nguyên.
32 bit Integer Operation

Result

-

NOTE:

Unsigned x unsigned

Signed x signed

Low 32-bit

(not availbale)

PMULLD

Hight 32-bit

(not availbale)


(not available)

64-bit

PMULUDQ*

PMULDQ

* có giá trị ưu tiên đối với SSE4.1

21


5.2. Floating-Point Dot Product Instructions

-

( Các lệnh xử lý giá trị thực)
DPPD: Biểu diễn giá trị thực với độ chính xác k p cho tối đa 2 elements và sử dụng giá trị đó (broadcast)
DPPS: Biểu diễn các giá trị thực với độ chính xác đơn cho tối đa 4 elements và sử dụng giá trị đó
(broadcast)
5.3. Streaming Load Hint Instruction

(Lệnh điều khiển nạp theo tiến trình dòng chảy)
Trong lịch sử, CPU đọc dữ liệu của vùng WC memory (Write-Combining memory) với thông lượng chậm
hơn đáng kể so với truy cập vào cacheable memory.
Write combining (WC) là một công nghệ bus máy tính cho ph p dữ liệu được kết hợp và lưu trữ tạm
thời trong một bộ đệm (buffer) – the write combine buffer (WCB). Rồi sau đó, dữ liệu được giải phóng
cùng lúc thay vì ghi từng bit hoặc từng đoạn bit đơn lẻ.
MOVNTDQA : còn được gọi là dòng lệnh “Streming Load” trong SSE4.1, cung cấp lời gợi ý không phụ

thuộc thời gian, cho ph p lấy 16-byte liền kề trong phạm vi 64-byte sắp thẳng hàng thuộc kiểu bộ nhớ WC
(“a streaming line”) để nạp và giữ lại trong một khu vực nhỏ của các bộ đệm tạm thời (“streaming load
buffers”). Sau đó, “dòng chảy” tiếp tục nạp tiếp nhóm 16-byte khác trong cùng “streaming line”. Việc này
có thể phù hợp với “streaming load buffer” và có thể giúp cải thiện thông lượng của CPU.
5.4. Packed Blending Instructions (Các lệnh trộn kiểu packed)

-

-

SSE4.1 thêm vào 6 lệnh sử dụng cho thao tác trộn dữ liệu (BLENDPS, BLENDPD, BLENDVPS,
BLENDVPD, PBLENDVB, PBLENDW)
Tùy theo điều kiện, quá trình trộn sao ch p một thành phần dữ liệu trong toán hạng nguồn vào một thành
phần giống như vậy trong toán hạng đích. Tập lệnh SSE4.1 đã nâng cấp các toán tử trộn cho hầu hết các
kích thước trường dữ liệu. Một lệnh đơn của SSE4.1 thông thường có thể thay thế cho một chuỗi 2 tới 4
quá trình hoạt động sử dụng các công nghệ trước đây.
Có hai phương thức trộn (Blend control):
+ imm8 (điều khiển byte trực tiếp)
+ XMM0 (sử dụng bộ lọc mặc nhiên – implied mask)

22


Instructions Packed Packed Packed Packed Packed Packed Blend
Double Single QWord DWord Word
Byte
Control
FP
FP
BLENDPS


X

BLENDPD

Imm8

X

BLENDVPS

Imm8
X

BLENDVPD

X

X
X

PBLENDVB

XMM0

(1)

XMM0

(2)


PBLENDW

(1)

X

(2)
X

(2)

X

X

XMM0
Imm8

TABLE1. Blend Field Size and Control Modes Supported by SSE4.1
NOTE:
1. Việc sử dụng các lệnh dấu chấm động SIMD trên các kiểu dữ liệu Integer có thể sẽ phải gánh chịu sự bất lợi về
mặt hiệu năng
2. Việc trộn lẫn biến số theo byte có thể sử dụng cho các trường có kích thước lớn hơn bằng cách định dạng lại
(hoặc sắp xếp lại) quá trình điều khiển trộn
5.5. Packed Integer MIN/MAX Instructions

-

(Các lệnh MIN/MAX với nhóm số nguyên)

SSE4.1 thêm vào 8 lệnh MIN và MAX cho nhóm số nguyên (PMINUW, PMINUD, PMINSB, PMINSD;
PMAXUW, PMAXUD, PMAXSB, PMAXSD)
Bốn lệnh MIN và MAX hoạt động trên các Dword có dấu và không dấu. Hai lệnh hoạt động trên các Word
không dấu.
Integer Width

Integer
Format

Byte

Word

Dword

Unsigned

PMINUB*
PMAXUB*

PMINUW
PMAXUW

PMINUD
PMAXUD

Signed

PMINSB
PMAXSB


PMINSW*
PMAXSW*

PMINSD
PMAXSD

TABLE2.Enhanced SIMD Integer MIN/MAX Instructions
Supported bySSE4.1
NOTE:
* có giá trị ưu tiên cho SSE4.1

23


5.6. Floating-Point Round Instructions with Selectable Rounding Mode

-

(Các lệnh làm tròn số thực với cách thức làm tròn tùy chọn)
ROUNDPS: Làm tròn các giá trị thực độ chính xác đơn thành các giá trị nguyên và trả lại các giá trị thực
đã được làm tròn.
ROUNDPD: Làm tròn các giá trị thực độ chính xác k p thành các giá trị nguyên và trả lại các giá trị thực
đã được làm tròn.
ROUNDSS: Làm tròn một giá trị thực độ chính xác đơn ở mức thấp thành giá trị nguyên và trả lại giá trị
thực đã được làm tròn.
ROUNDSD: Làm tròn một giá trị thực độ chính xác k p ở mức thấp thành giá trị nguyên và trả lại giá trị
thực đã được làm tròn.
5.7. Insertion and Extractions from XMM Registers


-

-

(Chèn và rút từ các thanh ghi XMM)
EXTRACTPS: Rút một giá trị thực độ chính xác đơn từ khoảng không gian được chỉ định trong thanh ghi
XMM và lưu kết quả vào bộ nhớ hoặc vào thanh ghi tổng quát.
INSERTPS: Chèn một giá trị thực độ chính xác đơn từ vị trí bộ nhớ 32-bit hoặc từ không gian được chỉ
định trong một thanh ghi XMM vào không gian được chỉ định trong thanh ghi XMM đích.
Thêm vào đó, INSERTPS cho ph p tập trung vào các thành phần dữ liệu trong thanh ghi đích, sử dụng một
bộ lọc.
PINSRB: Chèn một byte giá trị từ thanh ghi hoặc bộ nhớ vào một thanh ghi XMM.
PINSRD: Chèn một giá trị Dword từ thanh ghi 32-bit hoặc bộ nhớ vào thanh ghi XMM.
PINSRQ: Chèn một giá trị Qword từ thanh ghi 64-bit hoặc bộ nhớ vào thanh ghi XMM.
PEXTRB: Rút một byte từ thanh ghi XMM và chèn giá trị vào thanh ghi tổng quát hoặc bộ nhớ.
PEXTRW: Rút một Word từ thanh ghi XMM và chèn giá trị vào thanh ghi tổng quát hoặc bộ nhớ.
5.8. Packed Integer Format Conversions

-

-

(Quá trình chuyển đổi định dạng số nguyên – kiểu packed)
Kiểu dạng chung của toán tử trên các nhóm số nguyên là quá trình chuyển đổi bằng phương thức zero hoặc
sign-extension từ nhóm các số nguyên sang các loại dữ liệu rộng hơn.
SSE4.1 thêm vào 12 lệnh giúp chuyển đổi từ dạng số nguyên kích thước nhỏ hơn sang dạng số nguyên kích
thước lớn hơn. (PMOVSXBW, PMOVZXBW, PMOVSXBD, PMOVZXBD, PMOVSXWD,
PMOVZXWD,
PMOVSXBQ,
PMOVZXBQ, PMOVSXWQ, PMOVZXWQ, PMOVSXDQ, PMOVZXDQ).

Toán từ nguồn lấy từ thanh ghi XMM hoặc bộ nhớ; toán tử đích nằm trong thanh ghi XMM.

24


Source Type

Destination Type

Byte

Word

Dword

Sign Word
Unsign Word

PMOVSXBW
PMOVZXBW

Sign Dword
Unsign Dword

PMOVSXBD
PMOVZXBD

PMOVSXWD
PMOVZXWD


Sign Qword
Unsign Qword

PMOVSXBQ
PMOVZXBQ

PMOVSXWQ PMOVSXDQ
PMOVZXWQ PMOVZXDQ

TABLE 3. New SIMD Integer conversions supported by SSE4.1

5.9. Improve Sums of Absolute Differences (SAD) for 4-Byte Block

(Cải tiến khả năng tính tổng giá trị tuyệt đối hiệu cho mỗi khối 4-byte)
SSE4.1 thêm vào một lệnh (MPSADBW) cho ph p biểu diễn 8 quá trình SAD (4-byte chiều rộng) trong mỗi
câu lệnh để đưa ra 8 giá trị kết quả. So sánh với PSADBW, MPSADBW hoạt động trên các khối dữ liệu
nhỏ hơn (4-byte thay vì khối 8-byte). Điều này làm cho câu lệnh tương thích tốt hơn với các chuẩn mã hóa
video như VC.1 và H.264.
Horizontal Search (Tìm kiếm theo phƣơng ngang)
SSE4.1 thêm vào một lệnh tìm kiếm (PHMINPOSUW) có thể tìm giá trị và vị trí của “minium unsigned
word” từ một nhóm 8 word không dấu xếp ngang. Kết quả đưa ra - giá trị và ví trí (không gian trong phạm
vi nguồn) - được gói gọn vào Dword ở mức thấp của thanh ghi đích XMM.
5.10.

Packed Test (Kiểm tra dữ liệu – kiểu packed)
Lệnh “Pack Test - PTEST” có kế thừa tới 128-bit của lệnh TEST. Với PTEST, đối số nguồn được sử dụng
điển hình như một bộ lọc theo bit.
5.11.

Packed Qword Equality Comparisons

(So sánh đẳng thức Qword - packed)
SSE4.1 thêm vào 128-bit kiểm tra đẳng thức Qword. Lệnh mới này (PCMPEQQ) đồng nhất với
PCMPEQD, nhưng lệnh mới này làm việc với Qword còn PCMPEQD hỗ trợ Dword.
5.12.

Dword Packing With Unsigned Saturation
(Nén Dword với sự bão hòa không dấu)
SSE4.1 thêm vào một lệnh mới (PACKUSDW) để hoàn tất tập lệnh n n số nguyên nhỏ trong họ các mở
rộng của lệnh SIMD. PACKUSDW n n Dword trở thành Word với sự bão hòa không dấu.
Xem bảng dưới đây nói về tập lệnh n n cho các số nguyên nhỏ (small intergers)
5.13.

25


×