Tài liệu Báo cáo vi xử lý core i7 990x.

  • Số trang: 36 |
  • Loại file: PDF |
  • Lượt xem: 173 |
  • Lượt tải: 0

Mô tả:

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 - D09CN1 NGUYỄN THỊ HƯỜNG TRỊNH NGỌC HUY VŨ DUY KHÁNH NGUYỄN THỊ NGỌC LAN NGUYỄN VĨNH LONG 1 Tìm hiểu kiến trúc VXL 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 chính của VXL Intel 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
- Xem thêm -