Mục lục
A. Giới thiệu .2
I. Giới thiệu chung
II. Các thông số chính
III. Lịch sử
B. Kiến trúc .7
I. Sơ đồ chung
II. Các thành phần và thông số chính
III. Kiến trúc tập lệnh
C. Đặc tính – Công nghệ .17
I. Công nghệ thuật toán song song
II. Công nghệ siêu phân luồng
III. Chức năng đa phương tiện
IV. Thanh ghi cải tiến tập tin
V. Floating-Point ứng dụng kỹ thuật chuyên sâu
VI. Modulo theo dự kiến vòng lặp Pipelines
VII. Những cải tiến về nhánh
VIII. Độ trễ bộ nhớ giảm
D. Tổng kết – Đánh giá hiệu năng .28
E. Nguồn – Trích dẫn .30
34 trang |
Chia sẻ: netpro | Lượt xem: 2488 | Lượt tải: 5
Bạn đang xem trước 20 trang tài liệu Đề tài Vi xử lý Intel Itanium 9000, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ớng: ADDSS, SUBSS, MULSS, DIVSS, RCPSS, SQRTSS, MAXSS, MINSS, RSQRTSS
Đóng gói: ADDPS, SUBPS, MULPS, DIVPS, RCPPS, SQRTPS, MAXPS, MINPS, RSQRTPS
+ So sánh.
Vô hướng: CMPSS, COMISS, UCOMISS
Đóng gói: CMPPS
+ Dữ liệu ngẫu nhiên và giải nén.
Đóng gói: SHUFPS, UNPCKHPS, UNPCKLPS
+ Chuyển đổi kiểu dữ liệu.
Vô hướng: CVTSI2SS, CVTSS2SI, CVTTSS2SI
Đóng gói: CVTPI2PS, CVTPS2PI, CVTTPS2PI
+ Bit hoạt động logic.
Đóng gói: ANDPS, ORPS, XORPS, ANDNPS
Tập lệnh với số nguyên:
SSE bao gồm tập lệnh hướng và dấu chấm động có hướng.
+ Số học.
PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW
+ Chuyển dữ liệu.
PEXTRW, PINSRW
+ Khác.
PMOVMSKB, PSHUFW
Các tập lệnh khác:
SSE bao gồm tập lệnh hướng và dấu chấm động có hướng.
+ Quản lý MXCSR.
LDMXCSR, STMXCSR
+ Cache và quản lý bộ nhớ.
MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE
Các vấn đề về phần mềm và phần cứng.
Với tất cả các phần mở rộng của tập lệnh x86, với BIOS, hệ điều hành và lập trình ứng dụng để kiểm tra và phát hiện sự tồn tại và hoạt động thích hợp.
Intel và AMD cung cấp ứng dụng để phát hiện những phần mở rộng mà CPU của bạn hỗ trợ.
CPUID opcode là một bộ vi xử lý bổ sung tập lệnh (tên của nó bắt nguồn từ CPU Identification) cho kiến trúc x86. Nó được giới thiệu bởi Intel năm 1993 khi giới thiệu Pentium và các bộ vi xử lý 486 SL-Enhanced.
Người sử dụng hấp thụ các phần mở rộng của x86 bị chậm cơ bản do MMX và SSE (trong một số trường hợp) không được hỗ trợ bởi các ứng dụng khoảng 10 năm sau khi các phần mở rộng đã trở thành phổ biến. Tính toán phân tán đã tăng tốc việc sử dụng các phần mở rộng trong cộng đồng khoa học và nhiều ứng dụng khoa học từ chối chạy – trừ khi CPU hỗ trợ SSE2 hay SSE3.
Việc sử dụng nhiều phiên bản của một ứng dụng để đối phó với nhiều thiết lập khác nhau của phần mở rộng có sẵn là cách đơn giản nhất xung quanh vấn đề tối ưu hoá phần mở rộng x86. Thư viện phần mềm và một số ứng dụng đã bắt đầu hỗ trợ các kiểu mở rộng ám chỉ rằng sử dụng đầy đủ các tập lệnh x86 có sẵn có thể trở nên phổ biến khoảng 5 – 15 năm sau khi các tập lệnh ban đầu được giới thiệu.
Tập lệnh SSE2
SSE2, Streaming SIMD Extensions 2, là một trong những tập lệnh nằm trong Intel SIMD (Single Instruction, Multiple Data) lần đầu được giới thiệu bởi Intel với phiên bản ban đầu của Pentium 4 vào năm 2001. Nó được mở rộng từ tập lệnh SSE trước đó, được dự định để thay thế đầy đủ tập lệnh MMX . Intel mở rộng SSE2 để tạo ra SSE3 vào năm 2004. SSE2 bổ sung thêm 144 lệnh mới so với SSE (chỉ với 70 lệnh). Đối thủ sản xuất chip AMD đã bổ sung tập lệnh trong vi xử lý Opteron và Athlon 64 (AMD64 64-bit) vào SSE2.
Những thay đổi
SSE2 mở rộng tập lệnh MMX để hoạt động trên thanh ghi XMM, cho phép người sử dụng hoàn toàn tránh khỏi việc các thanh ghi MMX 64-bit bị chồng trong các thanh ghi stack dấu chậm đọng chính thức IA-32. Điều này cho phép trộn phần nguyên SIMD với cơ cấu điểm nổi vô hướng mà không có chế độ chuyển đổi giữa MMX và x87. Tuy nhiên, điều này là over-shadowed giá trị của việc có thể thực hiện các hoạt động MMX trên các thanh ghi SSE lớn hơn.
Những sự bổ sung khác trong SSE2 bao gồm một bộ các lệnh điều khiển bộ nhớ cache nhằm mục đích chủ yếu để giảm thiểu cache pollution khi xử lý dòng thông tin vô hạn định, và một sự bổ sung phức tạp của các lệnh chuyển đổi định dạng số.
Sự khác biệt giữa x87 FPU và SSE2
Tập lệnh FPU (x87) thường lưu trữ kết quả trung gian với độ chính xác 80 bit. Khi các thuật toán của FPU được chuyển sang SSE2, kết hợp một số biểu thức toán học hoặc các bộ dữ liệu đầu vào có thể dẫn đến sai lệch số đo lường: Điều này quan trọng trong tính toán khoa học, nếu kết quả tính toán phải được so sánh với kết quả tạo ra từ một kiến trúc máy tính khác.
Tùy thuộc vào trình biên dịch hay là thông dịch viên được sử dụng , kết quả trung gian khác nhau của một biểu thức toán học nhất định hoặc thuật toán chứa vòng lặp có thể cần phải được tạm thời lưu lại, và nạp lại sau. SSE2 làm việc với độ chính xác 32 hoặc 64 bit (4 hoặc 8 byte) trong khi tập lệnh x87 thông thường cho kết quả trong 80-bit trong các thanh ghi 80-bit của nó (10 byte).. Tất cả 80 bit kết quả của x87 có thể được lưu trữ trong bộ nhớ, nhưng vẫn thường làm tròn đến 64 hoặc 32 bit cho khả năng tương thích với các loại dữ liệu dấu chấm động phổ biến nhất. Tùy thuộc vào độ chính xác khi làm tròn, kết quả có thể khác nhau. Sự khác biệt tương tự có thể thấy khi so sánh kết quả từ độ chính xác 32 hoặc 64-bit mã SSE2 với kết quả tương ứng với độ chính xác 32, 64, hoặc 80-bit mã x87 . Đoạn mã Fortran sau đây được biên dịch với G95 như một ví dụ, giá trị chính xác của số thứ ba và cuối cùng được in ra là 0.
Sự khác biệt giữa MMX và SSE2
SSE2 mở rộng tập lệnh MMX để hoạt động trên các thanh ghi XMM. Vì vậy, nó có thể chuyển đổi tất cả các mã trong MMX tương đương sang SSE2. Kể từ khi thanh ghi XMM lớn gấp đôi thanh ghi MMX, các bộ đếm vòng lặp và truy cập bộ nhớ cần phải được thay đổi để phù hợp với điều này.
Mặc dù một lệnh SSE2 có thể hoạt động với gấp đôi lượng dữ liệu so với một lệnh MMX, nhưng hiệu suất không tăng đáng kể. Hai lý do chính là: truy cập dữ liệu SSE2 trong bộ nhớ không phù hợp với giới hạn 16-byte sẽ có nguy cơ chịu nhiều lỗi nguy hiểm, và thông lượng của tập lệnh SSE2 trong hầu hết triển khai của x86 thường nhỏ hơn so với tập lệnh MMX. Intel gần đây đã giải quyết vấn đề đầu tiên bằng cách thêm một lệnh vào SSE3 để giảm sự quá tải khi truy cập dữ liệu không phù hợp, và vấn đề thứ 2 bằng cách mở rộng các engine trong vi kiến trúc Core.
Kết Luận:
Itanium là dòng CPU dùng cho máy chủ trung và lớn với yêu cầu tốc độ tính toán cao đòi hỏi CPU phải có khả năng xử lí nhanh các yêu cầu, với việc hỗ trợ 3 tập lệnh MMX,SSE,SSE2 itanium 9000 hoàn toàn có thể đáp ứng được các yêu cầu đó một cách hoàn hảo. Với dòng CPU dùng cho máy chủ, yêu cầu đăt ra khi thiết kế đó là tốc độ, nó không đòi hỏi quá nhiều phép tính phức tạp nhưng bù lại nó cần đáp ứng yêu cầu tốc độ khi đồng thời xử lý nhiều luồng dữ liệu. 3 Tập lệnh mà intel hỗ trợ cho Itanium 9000 tăng cường khả năng xử lý của CPU qua đó cải thiện rất lớn về mặt tốc độ, độ chính xác.
Việc intel tấn công vào thị trường IA-64 là một bước đi mạo hiểm, bởi trước đó nền tảng IA-64 hoàn toàn do AMD nắm dữ, trong thời gian gần đây itanium đang mất dần đi vị trí của mình. Liệu nền tảng IA-64 có đem lại thành công cho in tel chúng ta hãy chờ đợi thêm một thời gian nữa.
Đặc tính – Công Nghệ
Công nghệ thuật toán song song ( Explicity Parallel Instruction Computing)
Công nghệ thuật toán song song (EPIC - Explicitly Parallel Instruction Computing) là cốt lõi của kiến trúc vi xử lý Itanium 2, được cùng phát triển bởi Intel và HP. EPIC thực ra được bắt nguồn từ các phòng phát triển của HP dựa trên những nghiên cứu từ năm 1989. Kiến trúc toán tử song song là một tiến bộ mới mở ra khả năng của vi xử lý nhằm vượt qua các giới hạn của RISC. Kiến trúc này mang lại cho các trình biên dịch khả năng kiểm soát được các lợi ích của xử lý song song ( Instruction Level Parallelism – ILP) thoát ra khỏi các giới hạn của những thiết kế out- of- order RISC.
Công nghệ thuật toán song song cung cấp khả năng thực hiện song song, dự báo, và suy đoán tốt cho một lệnh song song (ILP). Tính năng này giúp giải quyết các yêu cầu cao của doanh nghiệp và khối lượng công việc lớn.
Những thiết kế EPIC đã chuyển sự rắc rối của Out-of-Order RISC từ phần cứng sang phần mềm.
Những bước ngoặt về mặt kiến trúc gần đây xuất phát từ mong muốn giảm bớt sự rắc rối cồng kềnh của phần cứng nhằm giảm thời gian cần thiết để thiết kế và kiểm tra một vi xử lý mới hay tăng tần số hoạt động của vi xử lý. RISC là giải pháp để giảm sự phức tạp của những thiết kế CISC.
Những kỹ thuật về vi kiến trúc thông thường đưa những kiến trúc đó vào một phương cách phức tạp hơn để nâng cao hiệu suất mà không cần thay đổi kiến trúc tập lệnh. Đây chính là hiện trạng của những thiết kế Out-of-Order ( OoO) RISC. Kiến trúc EPIC là một phần của giải pháp nhằm tăng sự phức tạp của những thiết kế OoO RISC, và nhằm tái khởi động toàn bộ phần cứng tới một mức ít rắc rối hơn.
OOO RISC thiết kế rất phức tạp và đòi hỏi nỗ lực xử lý xác nhận thời gian tiêu thụ rộng lớn. Thiết kế RISC OOO hiện tại rất khó để mở rộng vượt ngưỡng 4 hướng dẫn rộng và cải tiến hiệu suất chính đáng mà không cần thêm nhiều chủ đề thực hiện trong phần cứng. Các nhà thiết kế EPIC công nhận rằng nếu các trình biên dịch đã được sự hỗ trợ đúng kiến trúc, sau đó trình biên dịch có thể làm nhiều của OOO phần cứng hiện nay. Những khái niệm này sẽ được thảo luận chi tiết sau này, nhưng đây là một vài ví dụ:
- EPIC cho phép trình biên dịch xác định trình tự chỉ thị độc lập, cho phép phần cứng để bỏ qua kiểm tra sự phụ thuộc giữa các chỉ thị. Chức năng này cùng một phần cứng trong các thiết kế RISC OOO rất tốn kém và phức tạp.
- Rõ ràng số nguyên lớn hơn và các tập tin thanh ghi FP trong các gia đình bộ xử lý Itanium thay thế các thanh ghi đổi tên và các tập tin thanh ghi ngầm trong thiết kế RISC OOO. Những tập tin thanh ghi lớn hơn rõ ràng cho phép Itanium có các trình biên dịch để thay thế các chức năng của đổi tên thanh ghi và cho phép hoạt động nhiều hơn để được thực hiện song song bởi vì kiến trúc thanh ghi có sẵn.
- Chức năng truyền trong EPIC cho phép explicitex ecution để tiến hành inparallel trên cả hai con đường của một bài kiểm tra chi nhánh, bỏ qua các kết quả trên con đường không chính xác khi các kiểm tra chi nhánh được giải quyết.
EPIC, tải và lưu trữ có thể được thực hiện hỏng do để kiểm soát và đầu cơ tính năng dữ liệu OOO RISC này phải được thực hiện với sự đặc biệt, phần cứng (và ẩn từ trình biên dịch) phức tạp. Tải Bảng Địa chỉ nâng cao (ALAT) EPIC được sử dụng để giải quyết xung đột bộ nhớ nhỏ hơn và đơn giản hơn so với các phần cứng cần thiết trong các thiết kế OOO điển hình.
Điều này không có nghĩa phần cứng EPIC là đơn giản. EPIC là không đơn giản như thiết kế vi xử lý RISC ban đầu. Đó là chính xác hơn để nói rằng một số sự phức tạp của các thiết kế RISC OOO có thể được giao cho phần mềm tạo ra trình biên dịch đã được chuyển đến các phần mềm. Các chức năng khác, mà không thể được thực hiện trong phần mềm, được yêu cầu của phần cứng. Một số ví dụ về các chức năng phần cứng mới là vị điều khiển bit, NAT điều khiển bit, thanh ghi tập tin lưu và phục hồi động cơ (RSE), và ALAT phần cứng (nâng cao tải Bảng địa chỉ). Chúng sẽ được thảo luận trong các phần sau đây. Tóm lại, EPIC là một kiến trúc "tao nhã" hơn bởi vì nó làm một công việc tốt hơn phân vùng phức tạp và chức năng giữa phần cứng và phần mềm.
MOVING COMPLEXITY BETWEEN HARDWARE & SOFTWARE
Bằng việc thiết lập môi trường dẫn các lệnh song song có thông lượng lớn, tạo khả năng xử lý song song, khả năng mở rộng và độ tin cậy đối với cơ sở dữ liệu, công nghệ EPIC được thiết kế đặc biệt cho chế độ xử lý song song hiệu quả cao - khả năng xử lý nhiều lệnh hoặc tiến trình đồng thời. Chế độ song song làm tăng khối lượng công việc được hoàn tất đối với mỗi bộ vi xử lý trong một chu kỳ xung nhịp do đó làm tăng đáng kể hiệu năng của các phần mềm ứng dụng. Bằng việc thiết lập một nền tảng tiên tiến cho chế độ song song, tăng thông lượng lệnh song song EPIC cho phép mở rộng hiệu năng bộ vi xử lý.
Với các kiến trúc truyền thống, bộ vi xử lý phải tự xác định được khả năng xử lý song song; EPIC có một bộ lệnh tăng cường cho phép các khả năng xử lý song song được xác lập một cách rõ ràng bởi chương trình dịch trước khi các đoạn mã phần mềm được chuyển tới bộ vi xử lý. Chương trình dịch hoàn toàn phù hợp với nhiệm vụ này vì nó có thể quan sát và phân tích toàn bộ đoạn mã phần mềm để đưa ra biện pháp xử lý song song hiệu quả nhất.
Về mặt hiệu quả: cả phần cứng và phần mềm tự do thực hiện việc xử lý dữ liệu theo phương thức tốt nhất. Chương trình dịch định hướng chương trình ứng dụng theo hướng tối ưu hoá hiệu năng. Bộ vi xử lý chỉ đơn gián xử lý các lệnh song song ở tốc độ nhanh nhất. Sự phân công công việc không chỉ đem lại lợi ích về hiệu năng mà còn tạo cơ hội cho việc mở rộng hoạt động trong tương lai.
Về phần mềm, các bộ chương trình dịch sẽ ngày càng phát triển, tiến bộ hơn trong việc tối ưu hoá mã phần mềm nhằm làm tăng thông lượng xử lý song song. Về phần cứng, những nỗ lực phát triển sẽ tiếp tục tập trung vào việc gia tăng số lượng các lệnh có thể xử lý được trong một chu kỳ xung nhịp.
Công nghệ siêu phân luồng ( Hyper Threading)
Với công nghệ HT trong bộ xử lý Itanium, số lượng các thread trong các hệ thống được tăng gấp đôi trong mỗi lõi, nên đã tăng bốn lần thread mà hệ điều hành sử dụng. Điều này sẽ cho hiệu suất cao hơn nhiều so triển khai như trước. HT không được giới thiệu trước khi họ Itanium ra đời, nó được giới thiệu lần đầu tiên trong bộ xử lý Intel Itanium2.
HyperThreading là tên của Intel đặt cho công nghệ SMT (Simultaneous Multi-Threading). Công nghệ này cho phép một nhân xử lý có thể thực sự xử lý song song các thread do các ứng dụng tạo ra, bằng cách trang bị thêm một số thành phần của nhân xử lý, khiến hệ điều hành nghĩ rằng nó đang làm việc với nhiều nhân xử lý. Như vậy, với một hệ điều hành tương thích bộ xử lý nhiều nhân hay nhiều bộ xử lý, nó sẽ sắp xếp để nhiều thread cùng được gửi đến các bộ xử lý “ảo” đó.
Nó dựa trên nguyên tắc là vào một thời điểm chỉ có một phần tài nguyên của CPU được sử dụng để thực thi lệnh của một tiến trình, những phần chưa được sử dụng có thể được dùng để thực thi các tiến trình khác.Trong các CPU sử dụng công nghệ Hyper-Threading, mỗi CPU logic sở hữu một tập các thanh ghi, kể cả thanh ghi đếm chương trình PC riêng (separate program counter), CPU vật lý sẽ luân phiên các giai đoạn tìm/giải mã giữa hai CPU logic và chỉ cố gắng thực thi những thao tác từ hai chuỗi lệnh đồng thời theo cách hướng tới những đơn vị thực thi ít được sử dụng.
Về mặt lý thuyết, khi chúng ta chỉ có một nhân xử lý thì nó có xử lý song song được bao nhiêu thread cũng không thể tăng tốc độ xử lý chúng lên được. Tuy nhiên trong thực tế, không phải bất kỳ lúc nào mọi thành phần của nhân xử lý cũng được sử dụng đến, và những thành phần không được sử dụng đến này có thể dùng để xử lý thread thứ hai (hoặc thứ ba, thứ tư…). Công nghệ SMT còn giúp bộ xử lý làm việc hiệu quả hơn bằng cách giảm bớt số lần nhân xử lý phải chuyển qua chuyển lại giữa các thread ‘’song song”. Quá trình chuyển này, như đã nói ở trên, diễn ra rất nhanh và liên tục, nhưng không có nghĩa là không mất thời gian, và bằng việc giảm bớt lượng công việc này, bộ xử lý có thể được rảnh rang để tập trung vào chuyên môn hơn.
Chức năng đa phương tiện (Multimedia Functionality)
Kiến trúc Itanium bao gồm khả năng xử lý đa phương tiện hiện đại và thanh ghi cần thiết cho nhiều loại xử lý đa phương tiện hoặc các tiến trình. Ứng dụng đa phương tiện ngày càng tăng, và bao gồm video trực tuyến, hình ảnh động, hình ảnh 2D và 3D và trình diễn, chế biến hình ảnh, nén / giải nén âm thanh và video , âm thanh và tổng hợp giọng nói, nhận dạng giọng nói, trò chơi và video hội nghị. Xử lý đa phương tiện liên quan đến việc giải mã, mã hóa, giải thích, tăng cường và biên dịch của dữ liệu số. Các thanh ghi trong kiến trúc EPIC cung cấp tương tự như HP PA-RISC của MAX-2 và IA-32 MMX và SSE của Intel. • Hỗ trợ song song thanh ghi đa phương tiện số nguyên 32-bit . Thanh ghi song song số học được cung cấp cho 32, 16 và 8 bit dữ liệu. Một cách cải tiến hiệu suất của 2x hoặc hơn nữa có thể được thu được bằng cách sử dụng các thanh ghi khi tập hợp dữ liệu ít hơn 64 bit. hoạt động có thể tùy chọn được thực hiện với quá tải số học.• Phần mở rộng song song nổi điểm SIMD (SSE). Kiến trúc Itanium định nghĩa lệnh song song duy nhất chính xác dấu phẩy động có hiệu quả có thể tăng gấpđ ôi hiệu suất cho loại hình hoạt động dữ liệu này .• Dòng hợp nhất I / O . I / O hoạt động cho các ứng dụng đa phương tiện thường được thực hiện trên nền 32-bit hoặc 64-bit và không được ghi vào không gian bộ nhớ cache. Nếu mỗi thao tác được gửi trực tiếp đến hệ thống bus để truyền đến thiết bị I / O, và do tốc độ dữ liệu chậm hơn trên một bus, nên hiệu suất sẽ bị ảnh hưởng rất nhiều. Kiến trúc Itanium cung cấp các bộ nhớ đặc biệt gợi ý cho phần cứng xử lý để kết hợp lại các hoạt động lưu trữ khối dòng kích thước vào bộ nhớ cache trước khi ghi dữ liệu vào thiết bị I / O.Những lệnh khác được cung cấp cho các dòng được ghi bởi bộ vi xử lý. yêu cầu nạp cũng có thể được kết hợp thành Bus đơn lớn hơn và được nạp vào các đệm hợp nhất.
Với sự phổ biến của các ngôn ngữ lập trình có cấu trúc và hướng đối tượng, các lời gọi thủ tục trở nên thường xuyên hơn, và các thiết bị chuyển mạch yêu cầu thanh ghi có thể mất nhiều thời gian xử lý hơn. Kiến trúc Itanium cung cấp hai cải tiến đáng kể để giảm thiểu vấn đề này.
• Thanh ghi ngăn xếp vật lý số nguyên tập tin lớn. Itanium kiến trúc quy định cụ thể 128 Thanh ghi số nguyên: 32 là "fixed" và 96 được "stacked". Mỗi lời gọi thủ tục có thể phân bổ đến 96 thanh ghi "stacked" trong khi có truy cập vào tất cả 32 thanh ghi "fixed". Mỗi thủ tục riêng của mình thanh ghi khung linh hoạt trong kích thước (không giống như các kiến trúc Sparc). Hầu hết các lời gọi thủ tục chỉ cần một vài thanh ghi mới tham gia xử lý, do đó, nhiều lời gọi có thể được thực hiện trước khi vượt quá giới hạn vật lý của thanh ghi tập tin. Nếu chương trình trả về mà không vượt quá kích thước ngăn xếp vật lý, thì sau đó không có bộ nhớ được cấp để lưu và khôi phục lại nội dung thanh ghi. Đây là một phương pháp hiệu quả để giảm lưu lượng truy cập bộ nhớ và tốc độ lời gọi thủ tục và trả về.
Kiến trúc SPARC là kiến trúc hình thức có khả năng thay đổi phạm vi sử dụng.
Thanh ghi cải tiến tập tin (Register File Improvement)
• Thanh ghi Lưu Engine (RSE) trong phần cứng. Các phần cứng RSE xử lý tràn và Van cân điều kiện trong các tập tin thanh ghi số nguyên tự động. Khi một lời gọi thủ tục vượt quá số lượng các thanh ghi vật lý có sẵn, phần cứng đặc biệt này sẽ ngay lập tức sử dụng không gian bằng cách tiết kiệm đi thanh ghi cũ vào bộ nhớ. Khi trở về, phần cứng RSE sẽ tự động khôi phục lại nội dung thanh ghi để thích hợp với các thanh ghi tập tin vật lý. Các hoạt động này là trong suốt người sử dụng và có thể được thực hiện trong lúc một "rảnh rỗi" (bất cứ khi nào cần thiết) hoặc "cần thiết" (cơ hội). (Cả Itanium cũng như các bộ vi xử lý Itanium 2 hỗ trợ các hoạt động của RSE.)
• Sử dụng năng lượng:Intel Itanium 2 sử dụng năng lượng ít hơn 20% so với dual-core Itaniums với hiệu suất cao gấp 2,5 lần cho mỗi watt, làm giảm nhu cầu năng lượng.
Độ dài từ của lệnh là 128-bit và có ba tập lệnh. Lệnh lấy dữ liệu từ bộ nhớ (Instruction fetch) có khả năng cung cấp hai trong số nhiều lệnh vào các pipelines dẫn từ bộ nhớ cache L1 trên mỗi chu kỳ đồng hồ. Điều này cho phép thực hiện 6 lệnh trong mỗi chu kỳ đồng hồ. Pipelines này bao gồm ba mươi giai đoạn có thể thực hiện một phần của Lệnh. Các đơn vị thực hiện được chia thành mười một nhóm có thể thực hiện một lệnh trên mỗi chu kỳ đồng hồ.
Floating-Point ứng dụng kỹ thuật chuyên sâu (Floating-Point Intensive Technical Applications)
Ứng dụng kỹ thuật có thể được hỗ trợ từ rất nhiều các các tính năng đã được tích hợp trong các pipelining, việc dự đoán, tính toán, tập lệnh SIMD, và số nguyên có giá trị lớn và các thanh ghi file dấu phẩy động. Một số tính năng và kiến trúc bổ sung có giá trị.• Thanh ghi file lớn FP(Large FP Register File). Kiến trúc gồm 32 "fixed" và 96 thanh ghi "rotating" FP. Những thanh ghi rotaing này được sử dụng bởi phần cứng pipelining để cung cấp vòng lặp tự động pipelining. (Thanh ghiquay được cung cấp trong các tập tin thanh ghisố nguyên để hỗ trợ phần mềm pipelining quá.) • Thnah ghi nạp cặp FP(Load FP Pair Instruction). Thanh ghi nạp cặp dấu phẩy động hoạt động rất hiệu quả cho phép truyền dữ liệu FP tới thanh ghi FP File và các đơn vị thực hiện FP. • Tăng chính xác của FP. Các đơn vị dấu phẩy động có kích thước 82 bit. Với 82 bit chính xác FP có thể hỗ trợ đơn, đôi và 80-bit có khả năng tiêu mở rộng chuẩn IEEE.
Modulo theo dự kiến vòng lặp Pipelines (Modulo Scheduled Software-pipelined Loops)
Kiến trúc EPIC đã cung cấp một phương pháp hiệu quả cho modulo vòng Bởi vì có rất ít chi phí, kỹ thuật này có thể có hiệu quả áp dụng cho vòng lặp lớn hay nhỏ, cung cấp nhiều cơ hội hơn cho việc tối ưu trình biên dịch. Nạp cơ bản > nạp > hoạt động > lưu trữ > nhánh vòng lặp được minh họa. ( Đây là điển hình của điểm nổi nhiều vòng ).Quá trình được chia thành ba giai đoạn: prolog, hạt nhân, và epilog. Kiến trúc EPIC cho phép cả ba giai đoạn được mã hóa vào một vòng lặp nhỏ gọn điều khiển bởi bits.
Việc thực hiện EPIC của modulo có ba kiến trúc kỹ thuật chính: thanh ghi luân phiên , luân phiên các vị, và kiểm soát nhánh vòng lặp. Thanh ghi luân phiên tự động tăng thanh ghi số ngăn xếp vật lý tăng quy định mỗi lặp đi lặp lại của vòng lặp, đảm bảo rằng vòng lặp tiếp theo sẽ không ghi đè lên dữ liệu trước đó. luân phiên các vị cho phép hoạt động để giai đoạn trong prolog và giai đoạn ra trong epilog. Các nhánh vòng lặp hỗ trợ lặp đi lặp lại thực hiện cho đến khi tất cả các lặp đi lặp lại hoàn thành và hoàn toàn có thể dự đoán thời điểm thoát ra khỏi vòng lặp. Người sử dụng hoặc trình biên dịch cung cấp hai giá trị cho việc kiểm soát các nhánh của các vòng. Các loop coubt (LC) là tính số lần lặp cho các giai đoạn và hạt nhân thực hiện. các epilog count (EC) cho biết cần thiết lặp đi lặp lại các vòng lặp để hoàn thành đúng tiến độ.
Những cải tiến về nhánh (Branching Improvements)
Một vấn đề lớn cho tất cả các vấn đề rộng (ví dụ như Alpha, PA-RISC) hoặc siêu pipelined (Pentium 4) vi kiến trúc là phân nhánh. Nhiều nhánh có thể dự đoán khá tin cậy và dự đoán rẽ nhánh tốt phần cứng có thể xử lý những chi nhánh này, nhưng một số nhánh không thể dự đoán đáng tin cậy. Điều này có thể là một mất mát lớn về hiệu suất. Kiến trúc EPIC cung cấp một số kỹ thuật để giúp giảm tác động của việc không thể đoán trước nhánh.( Phần này mô tả kỹ thuật dự đoán nhánh đó là tùy chọn cho phần cứng. Vi xử lý Itanium và Itanium 2 thực hiện một tập hợp con của những kỹ thuật này. Phần này không có nghĩa là tất cả các kỹ thuật được thực hiện ở hai bộ xử lý Itanium hoặc các bộ vi xử lý Itanium 2.
Độ trễ bộ nhớ giảm (Memory Latency Reduction)
Sự dự đoán giúp loại bỏ các nhánh từ các đường dẫn thực thi quan trọng, nhưng sớm hay muộn chương trình vẫn cần phải nạp từ bộ nhớ. Các bộ nhớ cache cấp độ đầu tiên đánh vào bộ vi xử lý Itanium 2 có một độ trễ chỉ có 1 chu kỳ, nhưng mức độ 1/3 bộ nhớ cache hit có 12 chu kỳ, và bộ nhớ hệ thống có thể mất 100 hơn thế số chu kỳ. Một kiến trúc tốt, kiến trúc và trình biên dịch có thể giúp giảm độ trễ hiệu quả cho hoạt động bộ nhớ.
Lập kế hoạch mã xung quanh các hoạt động nạp bộ nhớ là khó khăn, bởi vì thời gian nạp trễ có thể sẽ mất nhiều thời gian và không thể đoán trước. Di chuyển nạp trước của các ngành và các đơn vị lưu trữ suy đoán có thể làm giảm hiệu quả thời gian trễ bộ nhớ, nhưng không an toàn (do lỗi trang có thể vi phạm lệnh hoặc nạp / lưu trữ) trên nhiều RISC kiến trúc. Kiến trúc EPIC cho phép tối ưu hóa hiệu suất được thực hiện một cách an toàn, hiệu quả và cung cấp một số kỹ thuật giảm độ trễ bộ nhớ khác.
• Dự đoán điều khiển (Control Speculation): cho phép nạp được thực hiện sớm bằng cách thực hiện trước các nhánh mà không có phát hiện lỗi giả. Nếu dự đoán truy cập được thực hiện để một phần của bộ nhớ được trống, không hợp lệ, hoặc một người sử dụng không được phép truy cập, một kiến trúc thông thường sẽ yêu cầu một lỗi tốn kém để được thực hiện. Sử dụng một lệnh dự đoán nạp, vi xử lý Itanium trì hoãn một lỗi cho đến khi kết quả của hành động nạp được tiến hành. Một nạp ngắt dự đoán kết quả là một NAT trì hoãn mã thông báo cho các số nguyên, hoặc một NaTVal được mã hoá trong một toán hạng điểm nổi. Hầu hết các lệnh Itanium sẽ gọi một NAT đầu vào kết quả của nó, do đó cho phép một dự đoán mã trình tự để tiếp tục qua nhiều lệnh một cách chính xác và hiệu quả.
Kết quả của một hoạt động dự đoán phải được kiểm tra bởi một lệnh kiểm tra đặc biệt. Lệnh kiểm tra này có thể được thực hiện song song với việc sử dụng của kết quả dự đoán nó không có thời gian thực hiện báo lỗi. Khi một kết quả dự đoán được tìm thấy để có một mã thông báo NAT hoặc NaTVal, nhánh sẽ được thực hiện để phục hồi mã được cung cấp bởi trình biên dịch. Các hoạt động dự đoán sẽ được tái thực hiện và bất kỳ lỗi nào tồn tại sẽ được thực hiện bình thường. Nạp dự đoán có thể được kết hợp với sự suy đoán, nhưng các đơn vị lưu trữ không bao giờ thực hiện suy đoán. Một sử dụng quan trọng của kiểm soát dự đoán là vượt qua một danh sách liên kết trong khi đồng thời kiểm tra con trỏ NULL. Truy cập qua con trỏ NULL thường sẽ gây ra một lỗi, nhưng như là một dự đoán nạp, lỗi là chậm và không thực hiện nếu dữ liệu không bao giờ được sử dụng.
• Dự đoán dữ liệu (Data Speculation): cho phép nạp để nâng cao an toàn trước khi các đơn vị lưu trữ có thể thay đổi giá trị nạp. Trong ngôn ngữ lập trình hiện đại, nó được phổ biến để cho phép các chương trình sử dụng con trỏ với các loại
Các file đính kèm theo tài liệu này:
- Vi xử lý intel itanium 9000.doc