Phân tích kiến trúc vi xử lý Intel Lunar Lake – Phần 2: Nhân P và nhân E
P-core Lion Cove – Go big or go home
Bắt đầu từ Alder Lake, Intel áp dụng kiến trúc hybrid tương tự big.LITTLE của ARM. Tiếp tục như vậy, LNL cũng sẽ có 2 loại nhân x86 P-core Lion Cove và E-core Skymont. Trong đó, Lion Cove như đã nói, chính là “trái tim” sức mạnh của toàn bộ con chip (tương tự Zen 5 bên AMD).
Front-end
Phần đầu tiên trong một kiến trúc chip luôn là front-end, nơi nhập các yêu cầu công việc từ OS gửi xuống. Trên Lion Cove, khu vực này được mở rộng đáng kể. BPU hay bộ phận tiên đoán rẽ nhánh, có chức năng “đoán trước” các tập lệnh sẽ được dùng ở các chu kỳ sau, được mở rộng gấp 8 lần thế hệ trước! Vai trò của BPU tương tự như thư ký, hỗ trợ decoder sắp xếp công việc cho các thành phần execution. Sự mở rộng này cho thấy Intel muốn tối đa hoá số lượng tập lệnh có thể xử lý được.
Hỗ trợ thêm cho decoder là các µQueue và µCache. Trên các vi xử lý hiện đại, tập lệnh không được xử lý ngay tại chỗ mà sẽ bị chia nhỏ thành vi lệnh (micro-ops). Mục đích là để đơn giản hoá quá trình execution ở dưới. Đây cũng là điểm mà ranh giới của CISC và RISC trở nên nhạt nhoà – chúng chủ yếu chỉ khác biệt ở phần front-end nơi các tập lệnh có chiều dài khác nhau, còn khi chuyển thành vi lệnh thì “con anh con tôi” cũng thế. µCache của Lion Cove tăng lên 12-wide, tăng gấp 1.5 lần 8-wide của Redwood Cove. Kích thước µQueue cũng tăng lên, có điều Intel không nêu cụ thể là bao nhiêu.
Out-of-order (OoO) engine
Lion Cove là một kiến trúc hoàn toàn mới và khu vực OoO thể hiện rõ điều đó. Thành phần Retire được tách ra hẳn khỏi nhóm Allocate/Rename/Ellimation/Zero Idiom. Lý do chủ yếu vì Retire cần được tăng kích thước nhiều hơn, lên tới 12-wide. Nhóm Allocate cũng tăng 8-wide, gần như là tương ứng với kích thước 8-wide của decoder. Đáng chú ý hơn, thanh ghi Scheduler nay được chia tách ra Integer riêng và Vector (floating-point) riêng, cho thấy sự chuyên môn hoá vai trò.
Số lượng cửa sổ tập lệnh cũng được tăng từ 512 lên 576 đơn vị. Số cổng xử lý cũng tăng từ 12 lên 18 cổng. Trong đó 4 cổng dùng cho FPU (Vector), 6 cổng cho INT, 8 cổng dùng cho phân loại xử lý địa chỉ dữ liệu (AGU).
Execution
So với các kiến trúc trước, Lion Cove có khác biệt đáng kể khi đưa FPU ra riêng khỏi INT. Nếu như trước đây FPU dùng chung cổng với INT để nhận công việc từ front-end/OoO thì nay nó đã đứng độc lập. Theo quan điểm cá nhân, mình cho rằng Pat Gelsinger đang muốn đưa Intel trở lại đường đua siêu máy tính (HPC), nơi mà AMD đang rất có ưu thế. Vả chăng mà nói, Pat cũng là một trong các cựu kỹ sư đã từng tham gia thiết kế Itanium – một trong những dự án rất tham vọng của công ty này.
Và Pat không chỉ làm mỗi việc tách đôi 2 FPU và INT, ông còn tăng năng lực xử lý của từng cụm. So với Redwood Cove, các thành phần cụm INT Lion Cove đều tăng 1 đơn vị (6 ALU, 3 JUMP, 3 SHIFT), riêng MUL tăng gấp 3 lần. FPU Lion Cove cũng được “độ thêm” sức mạnh với 4 ALU (tăng từ 3) và 2 FP Divider (tăng từ 1). Nhìn chung, năng lực xử lý của Lion Cove mạnh hơn Redwood Cove và rất mạnh so với Cypress Cove (hiện dùng trên Core đời 14).
Back-end
Tất nhiên các thay đổi ở phía trên sẽ vô nghĩa nếu Lion Cove không có sự cải tiến nào về bộ nhớ. Quay lại ví dụ nhà máy, nếu front-end đại diện cho ban giám đốc gửi công việc xuống, OoO là phòng quản lý sản xuất, execution là các dây chuyền nhà máy thì back-end chính là bộ phận lưu kho (nội bộ xưởng – kho tổng nằm ở ngoài hay DRAM). Nhà máy mở rộng sản xuất thì nội bộ kho cũng phải tăng cường thêm, nếu không hàng hoá làm ra sẽ bị dồn ứ – thiệt hại sản lượng.
Trên Lion Cove, một chi tiết thú vị là sự xuất hiện của L0 Cache. Xét về thông số thì nó không khác L1 Cache trên Redwood Cove là bao (48 KB), ngoại trừ độ trễ giảm từ 5 xuống 4 chu kỳ. Lion Cove vẫn có L1 Cache nhưng dung lượng cao hơn (192 KB) và độ trễ cũng nhiều hơn (9 chu kỳ). Còn L2 Cache có độ trễ tăng nhẹ từ 16 lên 17 chu kỳ, bù lại dung lượng tăng lên đáng kể tới 2.5/3 MB (3 MB có lẽ là bản server).
Tổng quan lại, phần back-end của Lion Cove “rộng rãi” hơn rất nhiều, âu cũng là để chứa được nhiều dữ liệu hơn trước. Intel cho biết về tổng thể, Lion Cove có mức IPC tăng 14% so với Redwood Cove.
Bỏ Hyper-Threading để tiết kiệm silicon?
Nếu là một người quan tâm công nghệ PC, hẳn bạn sẽ không lạ gì Hyper-Threading (HTT) hay SMT (tên gọi chung trong ngành). Đây là một tính năng mà Intel rất tự hào mang đi ca tụng hơn 2 thập kỷ rồi. SMT được Intel quảng cáo nhiều tới nỗi đã có nhiều cuộc “đấu khẩu” rằng chip AMD “kém” hơn vì không có SMT (thế hệ trước Zen). Nhưng điểm buồn cười là chip M của Apple hay Snapdragon của Qualcomm chả có SMT vẫn cứ mạnh như thường. Thế nên có SMT hay không tuỳ thuộc vào mục tiêu thiết kế chip, chứ không phải điểm tiên quyết nói lên sức mạnh.
Quay lại Lion Cove, đây là lần đầu tiên trong 23 năm qua, Intel từ bỏ SMT trên sản phẩm của mình. Lý do mà công ty này đề ra là nếu không hỗ trợ SMT, thì 1 nhân xử lý được-tối-ưu (1 luồng) sẽ giảm được 10% diện tích nhưng vẫn cho hiệu năng xử lý tương đương với nhân hỗ trợ SMT (nhưng chỉ đang xử lý 1 luồng), hoặc ở cùng mức tiêu thụ điện thì hiệu năng sẽ hơn 15%. Còn so sánh với nhân đang xử lý 2 luồng, nhân được-tối-ưu (1 luồng) chỉ giảm 15% hiệu năng trên cùng diện tích, nhưng xét cùng mức tiêu thụ điện thì hiệu năng lại cao hơn 5%. Từ đấy, Intel (hoặc Pat Gelsinger) đã quyết định Lion Cove không cần hỗ trợ SMT nữa.
Một điểm khôi hài là nhớ lại lúc AMD (thuở Lisa Su chưa làm CEO) thiết kế chip Bulldozer, các kỹ sư công ty này cũng đưa ra nhận định không khác Intel hiện tại – họ có thể hỗ trợ SMT nếu thích nhưng chỉ cần thêm 15% silicon để ra 1 nhân “thực” thì tại sao phải xài nhân “ảo”? Thế nên Bulldozer và các sản phẩm dựa trên nó vẫn trung thành với triết lý CMP thay vì SMT. Chỉ khi Lisa Su về thì AMD mới chuyển qua SMT. Về lợi ích của SMT, mình sẽ có bài phân tích sâu hơn ở sau.
Theo quan điểm cá nhân, mình cho rằng việc Intel bỏ SMT trên Lion Cove thực chất đến từ E-core Skymont. Cụ thể hơn là ở cơ chế chia việc mới của Thread Director (TDD).
E-Core Skymont – Mạnh không kém Raptor Cove?
Thực ra câu nói trên có một tý khoa trương, hay đúng hơn là, còn thiếu điều kiện. Để E-core của LNL có thể mạnh ngang P-core của Core đời 13/14 thì yêu cầu là chúng phải được gắn với L3 Cache (LLC) hoặc Ringbus. Mà LLC hay Ringbus là thứ cho tới nay chỉ áp dụng cho P-core, bản thân các cụm E-core (4 nhân) hiện không có tính năng “đắt tiền” này (cache chiếm rất nhiều silicon). Skymont trên LNL hiện không có LLC.
Thông tin này của Intel cũng là một điểm thú vị. Theo ý kiến của mình, Intel có thể mang Skymont lên các dòng chip server (series Forest) và trang bị LLC cho chúng. Còn với desktop, nếu E-core có thể xài chung LLC với P-core thì mọi thứ sẽ rất ly kỳ… Nhưng thôi, hãy trở về với LNL.
Front-end
Nếu đã từng xem qua phần phân tích E-core Crestmont của MTL, bạn dễ nhận thấy Skymont là phiên bản lớn của Crestmont! Trong khi Crestmont có 2 cụm decoder (2x 3-wide) thì Skymont là 3 cụm (3x 3-wide). Dung lượng bộ queue cũng như fetch của Skymont cũng gấp 1.5 lần Crestmont (từ 64 lên 96 đơn vị).
Nhưng do chỉ là E-core, các thành phần tiên đoán rẽ nhánh hay lên tập lệnh của Skymont vẫn khá đơn giản. Chúng chỉ bự hơn Crestmont vì có nhiều decoder hơn.
Out-of-order (OoO) engine
Bạn có thể đang nghĩ, 9-wide decoder thì OoO cũng phải 9-wide cho tương xứng? Không. Nếu đây là P-core thì sẽ như thế, nhưng đây không phải P-core. Intel chỉ mở rộng khu vực này từ 6-wide lên 8-wide. Nó cũng chỉ có 2 chức năng Allocate/Rename chứ không được đầy đủ bằng Lion Cove.
Một “nét truyền thống” của E-core từ bao lâu nay là chúng không có thanh ghi Scheduler. Thay vào đó các vi lệnh sau khi được decode sẽ đẩy thẳng xuống các cổng để đưa vào các ống lệnh INT hay FPU. OoO của Skymont chỉ cải thiện ở chỗ tăng số lượng cửa sổ tập lệnh từ 256 lên 416, cũng như mở rộng thêm kích thước cho các thanh ghi khác.
Execution
Tuy cấu trúc đơn giản, nhưng vì số decoder tăng hơn trước nên khu vực xử lý của Skymont cũng cần mở rộng hơn Crestmont. Cũng giống các đời E-core trước, Skymont có rất nhiều cổng để nhận yêu cầu xử lý từ front-end/OoO. Riêng khu vực INT/MEM có tới 26 cổng nhận dữ liệu (!), FPU là 6 cổng. Mặc dù số cổng nhiều là thế nhưng số ống lệnh không bao nhiêu. Chúng ta có 4 ống INT, 2 ống MEM và 1 ống JMP, 1 ống STD. Còn FPU là 5 ống lệnh.
Cũng do số ống lệnh tăng lên, các đơn vị tính toán của Skymont cũng tăng theo. So với Crestmont, số ALU INT tăng gấp đôi (4 lên 8). Riêng bên FPU, Intel cho biết khu vực này có năng lực xử lý các vector có kích thước 4x 128-bit, giúp cải thiện hơn năng lực AI. Các đơn vị FMUL, FADD, FMA cũng giảm bớt độ trễ, cho phép tính toán nhanh hơn trước.
Back-end
Front-end và Execution mở rộng hơn đồng nghĩa Back-end cũng thế. Chúng ta có tới 7 AGU thay cho 4 ở thế hệ trước. Chúng cho phép đạt tới 3 lượt Load 128-bit và 4 lượt Store. L2 TLB tăng 33% từ 3096 lên 4192 entry.
Dù thế, dung lượng cache vẫn giữ nguyên như Crestmont, cho thấy E-core vẫn bị “phân biệt đối xử”. Có thể tưởng tượng nhà máy có nhiều công nhân hơn để đẩy hàng đi lại, song diện tích khu vực để pallet hàng thì vẫn như cũ.
Tổng quan lại, Intel cho hay Skymont có hệ số IPC INT cao hơn Crestmont 38%, còn FPU là 68%! Khá ấn tượng! Trong khi đó nếu được trang bị LLC, IPC Skymont sẽ ngang ngửa với Raptor Cove. Có điều món này hiện không áp dụng cho LNL, thế nên chúng ta chỉ cần con số so sánh với Crestmont được như Intel quảng cáo…