14 điểm bởi xguru 2023-03-14 | 3 bình luận | Chia sẻ qua WhatsApp

Tổng hợp thuật ngữ dành cho người mới bước vào hệ sinh thái Arm

  • Kiến trúc Arm là một họ sản phẩm RISC với các chế độ định địa chỉ đơn giản
  • Arm Limited là công ty Anh quản lý kiến trúc Arm
  • ARM ban đầu là Acorn RISC Machine, sau đó trở thành Advanced RISC Machines
  • Arm ARM (Architecture Reference Manual) là tài liệu hướng dẫn lập trình cho Arm
  • Armv9 là thế hệ mới nhất trong họ kiến trúc (tính đến thời điểm tác giả viết bài). Nó bổ sung SIMD vector (SVE) và các phép toán ma trận (SME/SME2), v.v.
  • Armv9.4-A là đợt mở rộng mới nhất của Armv9. Các mở rộng này được tài liệu hóa trong Arm ARM. Một số mở rộng ban đầu là tùy chọn khi được giới thiệu, nhưng dự kiến sẽ trở thành bắt buộc ở các phiên bản sau
  • Chữ A trong Armv9.4-A có nghĩa là "Application Profile". Nó hỗ trợ bộ nhớ ảo thông qua MMU và có thể thấy trong mọi hệ thống Arm như điện thoại, laptop, máy chủ, v.v.
    Ngoài ra còn có "R" cho các hệ thống thời gian thực, hoặc "M" cho vi điều khiển không có MMU.
    Ba profile kiến trúc này cũng chính là "A" "R" "M"
  • AArch64 là một "execution state" được giới thiệu từ ARMv8. Nó hỗ trợ thanh ghi 64b (31 thanh ghi đa dụng, con trỏ ngăn xếp 64b chuyên dụng, bộ đếm chương trình 64b, thanh ghi giả zero-value)
    Đồng thời, tính năng 32b từng dùng trong ARMv7 được đặt tên là AArch32
  • Điều thú vị là Arm ARM không nhắc đến thuật ngữ ARM64 (dù Apple, Microsoft và Linus Torvalds lại thích dùng tên này)
    Tên gọi này rốt cuộc cũng có ý nghĩa; nhân Linux arm64 có thể chạy mã không gian người dùng ở execution state AArch64 hoặc AArch32, nhưng bản thân kernel chỉ dành riêng cho AArch64
  • A64 là tập lệnh được giới thiệu trong AArch64. Trên thực tế, đây cũng là tập lệnh duy nhất mà AArch64 hỗ trợ. Các thanh ghi của AArch64 là 64b, nhưng bản thân lệnh vẫn là 32b (độ rộng cố định)
    A32 là ISA cũ. Nó cũng có độ rộng cố định 32b. T32 là tập lệnh được dùng trước Armv8, mang nghĩa Thumb2 32b và 16b
  • Điều không nên nhầm với A64 là cách dùng "A78" để chỉ lõi, tức Cortex-A78.
    Arm không chỉ thiết kế kiến trúc Arm mà còn thiết kế cả các hiện thực kiến trúc mà ta gọi là vi kiến trúc. Bất kể con số phía sau là gì, nếu thấy từ Cortex hoặc Neoverse thì đó là các vi kiến trúc do Arm thiết kế.
    Ví dụ, Cortex-A78 hiện thực các mở rộng đến ArmV8.3. Wikipedia có một mẫu tổng hợp về điều này
  • DynamIQ (trước đây là bit.LITTLE) dựa trên ý tưởng dùng các lõi dị thể (heterogeneous) thay vì đồng thể (homogeneous) trong hệ đa lõi
    Ưu điểm của thiết kế này là mỗi loại lõi có thể làm tốt các công việc khác nhau ở các thời điểm khác nhau. Khi cần hiệu năng thì dùng bộ xử lý out-of-order tiêu thụ nhiều điện hơn, còn khi cần giảm điện năng thì dùng các lõi in-order chậm hơn
    Thật thú vị khi thấy Intel cũng làm điều tương tự với các lõi hiệu năng/lõi hiệu quả trên Alder Lake
  • Khi đào sâu vào reference manual, có thể thấy nhiều Execution State phát triển khá thú vị: A55, X1, X3, v.v.
  • Các thuật ngữ legacy
    • ARM9 không nên bị nhầm với Armv9. Đây là một họ sản phẩm lõi, trong đó một số hiện thực ARMv4t và một số hiện thực ARMv5
    • StrongARM là dòng CPU ARMv4 do DEC tạo ra. Intel giành được IP này thông qua dàn xếp kiện tụng, rồi cuối cùng tự thiết kế vi kiến trúc ARMv5 của riêng mình với tên XScale
      Cuối cùng Intel đã bán dòng SoC PXA dùng XScale cho Marvell. Thật tò mò nếu Intel đã đi cùng Atom và/hoặc kiên trì với XScale thì thế giới sẽ ra sao
    • ARMv4 giới thiệu tập lệnh nén gọi là Thumb. Các lệnh có độ rộng cố định 16b
    • ARMv6t2 giới thiệu Thumb2, hỗ trợ lệnh 32b và UAL (Unified Assembly Language), v.v.

3 bình luận

 
roxie 2023-03-16

Cái tên Arm ARM đúng là nhìn kiểu nào cũng thấy như cố tình chơi chữ nhỉ, haha

 
roxie 2023-03-16

haha

 
eususu 2023-03-14

Có lẽ mình sẽ nhớ mãi Arm ARM :)