CPU bao gồm tám đơn vị chức năng độc lập chia thành hai đường dữ liệu, A và B. Mỗi đường dữ liệu có một bộ nhân (.M), các bộ logic và số học (.L), rẽ nhánh, xử lý bit, và toán học (.S), cho tải / lưu và các phép tính số học (. D ). Các các đơn vị .S và .L thực hiện các lệnh toán học, logic và rẽ nhánh. Tất cả các dữ liệu truyền sử dụng đơn vị .D.
Các phép tính số học, như trừ hoặc cộng (SUB hoặc ADD), có thể được thực hiện bởi tất cả các đơn vị, ngoại trừ các đơn vị .M.
Tám đơn vị chức năng bao gồm 4 ALUs floating/fixed-point (hai .L và hai .S), hai bộ ALU fixed-point (.D units), và hai bộ nhân floating/fixed-point (.M units). Mỗi đơn vị chức năng có thể đọc trực tiếp hoặc ghi trực tiếp đến các
file thanh ghi bên trong đường dữ liệu của nó. Mỗi đường bao gồm một tập hợp 16 thanh ghi 32 bit, từ A0 đến A15 và B0 đến B15. Các đơn vị kết thúc bằng 1 để viết tới file thanh ghi A và các đơn vị kết thúc bằng 2 để viết các file thanh ghi B.
* Fetch and execute packets
Một gói FP (Fetch Packet) gồm 256 bit (8 lệnh có độ dài 32 bit). Mỗi lần, một gói FP được lấy từ bộ nhớ. Một EP (Execute Packet) bao gồm một nhóm các lệnh có thể được thực hiện song song trong cùng một chu kỳ. Số EP bên trong một FP có thể biến thiên từ một (trong trường hợp 8 lệnh song song) đến tám (trong trường hợp khơng có lệnh song song). Kiến trúc VLIW được chỉnh sửa cho phép nhiều hơn một EP được chứa trong một FP. Bit có trọng số thấp nhất của mỗi lệnh 32 bit được sử dụng để xác định lệnh tiếp theo có thuộc về cùng một EP hay khơng. Bit này bằng 1 nếu cùng một EP và bằng 0 nếu khác EP.
* Pipeline
Pipeline là kiến trúc trong đó một lệnh được chia thành nhiều giai đoạn, mỗi giai đoạn được thực hiện lần lượt theo thời gian và bởi một đơn vị phần cứng riêng. Điều này cho phép nhiều lệnh được thực hiện đồng thời trong một đơn vị thời gian.
Một lệnh được chia thành 3 giai đoạn: lấy lệnh, giải mã lệnh và thực hiện lệnh.
Trong đó giai đoạn lấy lệnh gồm bốn trạng thái:
a) PG (Program address generate): tạo một địa chỉ (thực hiện trong CPU) b) PS (Program address send): gửi địa chỉ chương trình tới bộ nhớ
c) PW (Program address ready wait): đợi đọc bộ nhớ để lấy dữ liệu d) PR (Program fetch packet Receive): đọc mã từ bộ nhớ
Giai đoạn giải mã lệnh bao gồm hai trạng thái:
b) DC: giải mã lệnh
Giai đoạn thực hiện bao gồm 6 trạng thái (với dấu phẩy tĩnh) đến 10 trạng thái (với dấu phẩy động). Phần lớn các lệnh có một trạng thái trong giai đoạn thực hiện lệnh. Các lệnh như lệnh nhân (MPY), tải (LDH/LDW), rẽ nhánh (B) sử dụng hai, năm và sáu trạng thái tương ứng. Các lệnh sử dụng nhiều trạng thái trong giai đoạn thực hiện lệnh bao gồm các lệnh dấu phẩy động và lệnh độ chính xác double. Ví dụ, lệnh nhân độ chính xác double (MPYDP) có chín khe trễ, do đó giai đoạn thực hiện lệnh bao gồm 10 trạng thái.
Bảng 1.2: Trạng thái của một lệnh
Bảng 1.3: Hiệu ứng Pipeline