You are on page 1of 11

Học viên: Lê Thế Phát

Lớp: B9D53

Tìm hiểu các tập lệnh của các bộ vi xử lý tiên tiến

I. Tập lệnh AVX2


1. Giới thiệu chung

Tập lênh AVX2 (Advanced Vector Extensions 2) là phần mở rộng cho


kiến trúc tập lệnh x86 dành cho bộ vi xử lý của Intel và AMD. AVX2 được giới
thiệu lần đầu vào năm 2013 và được Intel sử dụng trong bộ vi xử lý kiến trúc
Haswell.

AVX2 mở rộng bộ lệnh SSE (Streaming SIMD Extensions) với việc


thêm các chức năng mới như phép toán số nguyên và phép toán logic trên các
vector. Điều này cho phép xử lý dữ liệu song song trên nhiều thành phần của
vector cùng một lúc, từ đó tăng tốc đáng kể hiệu năng tính toán.

AVX2 đã nhanh chóng trở thành một công cụ quan trọng cho việc tối
ưu hóa hiệu năng trong các ứng dụng đa luồng, xử lý hình ảnh, âm thanh, video
và các thuật toán số học phức tạp. Sử dụng tập lệnh AVX2 có thể giúp tăng tốc
đáng kể quá trình tính toán trên máy tính của bạn.

2. Điểm nổi bật của tập lệnh AVX2.

Tập lệnh AVX2 là một phần mở rộng của tập lệnh SSE và AVX trong
kiến trúc x86. Nó cung cấp một loạt các thành phần SIMD (Single Instruction,
Multiple Data) để tăng hiệu năng xử lý đồng thời trên dữ liệu.

Cấu trúc của tập lệnh AVX2 bao gồm các thanh ghi vector (YMM
registers) có độ rộng 256-bit, cho phép lưu trữ và xử lý đồng thời 8 giá trị float
hoặc 4 giá trị double. Các lệnh AVX2 sử dụng các thanh ghi vector này để thực
hiện các phép tính vector.
Một số chức năng chính của AVX2 bao gồm:

 Phép toán số học vector: cộng, trừ, nhân, chia, tính căn bậc hai, v.v.

 Phép toán logic vector: AND, OR, XOR, NOT, v.v.

 Phép so sánh vector: lớn hơn, nhỏ hơn, bằng nhau, v.v.

 Shuffle và hoán vị vector: xáo trộn các phần tử trong vector.

 Bitwise operation: dịch trái, dịch phải, xoay trái, xoay phải, v.v.

Dưới đây là một số điểm nổi bật của tập lệnh AVX2:

 Vectorization: Tập lệnh AVX2 cho phép bạn thực hiện các phép toán
trên nhiều phần tử dữ liệu cùng một lúc. Ví dụ, bạn có thể thực hiện các
phép cộng, trừ, nhân hoặc chia trên một vector 256-bit chứa 8 số nguyên
32-bit hoặc 16 số nguyên 16-bit.
 Phép toán bit-wise: AVX2 hỗ trợ các phép toán bit-wise (AND, OR,
XOR) trên vector, giúp thực hiện các phép tính logic trên dữ liệu đồng
thời.
 Phép toán blend: AVX2 cung cấp các phép toán blend để lấy các phần tử
từ hai vector khác nhau và kết hợp chúng theo một công thức xác định.
Điều này rất hữu ích khi bạn muốn lựa chọn các giá trị từ các vector khác
nhau dựa trên một điều kiện.
 Phép toán shift: AVX2 hỗ trợ các phép toán shift trên vector, cho phép
dịch chuyển các bit sang trái hoặc sang phải trên mỗi phần tử của vector.
 Hỗ trợ số nguyên 8-bit và 16-bit: Tập lệnh AVX2 mở rộng đến số
nguyên 8-bit và 16-bit, giúp tăng khả năng xử lý với dữ liệu nhỏ hơn so
với SSE và AVX.

Tóm lại, tập lệnh AVX2 cung cấp nhiều tính năng mạnh mẽ để tăng
hiệu năng xử lý đồng thời trên dữ liệu. Nếu bạn làm việc với ứng dụng yêu cầu
xử lý số học hoặc đồ họa cao cấp, sử dụng AVX2 có thể giúp tăng tốc đáng kể.
3. Những bộ vi xử lý ứng dụng tập lệnh AVX2
Tập lệnh AVX2 được tích hợp lần đầu trên bộ vi xử lý có kiến trúc
Haswell Lake của Intel và đã đem lại hiệu quả cao về sức mạnh xử lý và tính
toán của bộ vi xử lý.
Dưới đây là một số dòng CPU hỗ trợ AVX2:
 Intel Core thế hệ thứ 4 (Haswell): Core i3, Core i5, Core i7
 Intel Core thế hệ thứ 5 (Broadwell): Core i3, Core i5, Core i7
 Intel Core thế hệ thứ 6 (Skylake): Core i3, Core i5, Core i7
 Intel Core thế hệ thứ 7 (Kaby Lake): Core i3, Core i5, Core i7
 Intel Core thế hệ thứ 8 (Coffee Lake): Core i3, Core i5, Core i7
 Intel Core thế hệ thứ 9 (Coffee Lake): Core i3, Core i5, Core i7
 Intel Xeon phiên bản mới nhất

Các ứng dụng của tập lệnh AVX2 bao gồm:


 Xử lý hình ảnh và video: AVX2 có thể được sử dụng để tăng tốc các
thuật toán xử lý hình ảnh và video như lọc thông minh, phân tích màu sắc,
mã hóa và giải mã video.
 Kỹ thuật số: AVX2 có thể được sử dụng trong các ứng dụng liên quan
đến xử lý âm thanh, xử lý tín hiệu số, mã hóa và giải mã âm thanh.
 Máy học và trí tuệ nhân tạo: AVX2 có thể được sử dụng để tăng tốc các
thuật toán máy học và trí tuệ nhân tạo như tính toán ma trận, tính toán
vector và các phép tính số học nhanh.

II. Tập lệnh AVX-512


1. Giới thiệu chung
AVX-512 (Advanced Vector Extensions 512) là một tập lệnh SIMD
(Single Instruction, Multiple Data) mở rộng của kiến trúc x86 được Intel giới
thiệu vào năm 2013. AVX-512 cung cấp một loạt các lệnh vector mới và các
thanh ghi vector có độ dài 512-bit, cho phép thực hiện các phép tính đồng thời
trên nhiều dữ liệu.

Tập lệnh AVX-512 cung cấp nhiều cải tiến so với các phiên bản trước
đó như SSE (Streaming SIMD Extensions) và AVX (Advanced Vector
Extensions). Các cải tiến này bao gồm:

 Vector width tăng lên 512-bit, giúp tăng số lượng phần tử trên mỗi vector
và kích thước bộ nhớ truy cập đồng thời.
 Cung cấp các lệnh mới để thực hiện các phép tính phức tạp như multiply-
accumulate, gather/scatter, shuffle, permute và compress/expand.
 Hỗ trợ cho các kiểu dữ liệu mới như floating-point, integer, bitwise, mask
register và các kiểu dữ liệu nguyên thủy khác.
 Độ phân giải cao hơn trong việc thực hiện các phép tính số học, giảm
thiểu sai số tính toán.

Sử dụng tập lệnh AVX-512 trong các ứng dụng có thể giúp tăng hiệu
suất tính toán đáng kể trong các tác vụ đòi hỏi tính toán số học nhanh, xử lý ảnh,
xử lý âm thanh, mô phỏng vật lý và các ứng dụng khoa học khác.

2. Điểm nổi bật của tập lệnh AVX-512

AVX-512 được giới thiệu như một phiên bản thay thế cho tập lệnh
AVX2 và nó có một số điểm nổi bật như sau:

 Độ rộng vector: AVX-512 cho phép xử lý cùng lúc 512 bit dữ liệu trong
các thanh ghi vector. Điều này tương đương với 16 số nguyên 32-bit hoặc
8 số thực float-point 64-bit có thể được xử lý cùng một lúc.
 Tính toán đa luồng: Với AVX-512, bạn có thể thực hiện nhiều phép tính
đối với nhiều dữ liệu cùng một lúc. Điều này rất hữu ích trong việc xử lý
đa luồng và tính toán song song trong các ứng dụng như computer vision,
deep learning hay scientific computing.
 Cải tiến hiệu năng: AVX-512 sử dụng một loạt các tối ưu hóa để tăng
hiệu năng tính toán. Các tối ưu hóa này bao gồm các tập lệnh mới như
vector gather, permute và compress, giúp tối ưu hóa việc truy cập dữ liệu
và xử lý vector.
 Hỗ trợ cho các công cụ phân tích biểu đồ: AVX-512 cung cấp các tập
lệnh để thực hiện các phép tính trên các ma trận và vector. Điều này rất
hữu ích trong việc phân tích số liệu, tính toán đại số tuyến tính và các
phép biến đổi khác.
 Mở rộng khả năng tính toán: AVX-512 cung cấp các tập lệnh để thực
hiện các phép tính trên dữ liệu 32-bit và 64-bit, cũng như các phép tính
trên số nguyên và số thực. Điều này mở rộng khả năng tính toán của CPU
và cho phép xử lý dữ liệu với độ chính xác cao.
Điểm đặc biệt hơn nữa là tập lệnh AVX-512 lại bao gồm nhiều tập
lệnh con trong đó. Tuy nhiên, không phải tất cả các bộ vi xử lý tiên tiến đều hỗ
trợ hết các tập lệnh con này.
Các tập lênh cong của AVX-512:
1. AVX-512 Foundation (F)
2. AVX-512 Conflict Detection Instructions (CD)
3. AVX-512 Exponential and Reciprocal Instructions (ER)
4. AVX-512 Prefetch Instructions (PF)
5. AVX-512 Vector Length Extensions (VL)
6. AVX-512 Byte and Word Instructions (BW)
7. AVX-512 Doubleword and Quadword Instructions (DQ)
8. AVX-512 Integer Fused Multiply Add (IFMA)
9. AVX-512 Vector Byte Manipulation Instructions (VBMI)
10.AVX-512 Vector Neural Network Instructions Word variable
precision (4VNNIW)
11.AVX-512 Fused Multiply Accumulation Packed Single precision
(4FMAPS)
12.VPOPCNTDQ
13.VPCLMULQDQ
14.AVX-512 Vector Neural Network Instructions (VNNI)
15.AVX-512 Galois Field New Instructions (GFNI)
16.AVX-512 Vector AES instructions (VAES)
17.AVX-512 Vector Byte Manipulation Instructions 2 (VBMI2)
18.AVX-512 Bit Algorithms (BITALG)
19.AVX-512 Bfloat16 Floating-Point Instructions (BF16)
20.AVX-512 Half-Precision Floating-Point Instructions (FP16)

Mỗi tập lệnh con có chức năng riêng và được sử dụng trong các ứng
dụng cụ thể. Chúng cung cấp những tính năng mạnh mẽ để tối ưu hóa hiệu suất
của mã x86 trên các bộ vi xử lý hỗ trợ AVX-512.

3. Những bộ vi xử lý ứng dụng tập lệnh AVX-512


Tập lệnh AVX-512 là một tập lệnh đặc biệt nên không phải bộ vi xử
lý nào cũng có thể hỗ trợ toàn bộ các tập lệnh con của nó.
P VPCLMULQD
Tập con F CD ER 4FMAPS 4VNNIW VL DQ BW IFMA VBMI VBMI2 BITALG VNNI BF16 GFNI VAES VP2INTERSECT FP16
F Q
Intel
Knights
(2016)
Intel
Skylake
(2017)
Intel
Cannon
Lake
(2018)
Intel
Cascade
Lake
(2019)
Intel
Cooper
Lake
(2020)
Intel Ice
Lake
(2019)
Intel
Tiger
Lake
(2020)
Intel
Rocket
Lake
(2021)
Intel
Alder
Lake
(2021)
AMD
Zen 4
(2022)

Chú thích: Có hỗ trợ


Không hỗ trợ
Không chính thức hỗ trợ những vẫn có thể sử dụng
III. Tập lệnh FMA
1. Giới thiệu chung

Tập lệnh FMA là một phần mở rộng của tậm lệnh SSE 128bit và 256
bit trong kiến trúc tập lệnh x86 để thực hiện thao tác đồng thời phép nhân và
phép cộng trên cùng một phép tính.

Tập lệnh FMA có hai phiên bản là:

 FMA4: là một tập lệnh SIMD (Single Instruction, Multiple Data) được sử
dụng trong các bộ vi xử lý AMD. Nó cho phép thực hiện cùng một lúc cả
phép nhân và cộng vào một giá trị. Nó được thêm vào lần đầu trong kiến
trúc AMD Bulldozer.
 FMA3: thực hiện phép tính nhân hai số học có dấu và sau đó cộng một số
học có dấu vào kết quả. Đây là một phép tính phổ biến trong các thuật toán
đòi hỏi tính toán chính xác cao và đạt hiệu suất cao.
2. Đặc điểm nổi bật của tập lệnh FMA3, FMA4

Đặc điểm nổi bật của tập lệnh FMA3 bao gồm:

 Tích hợp phép nhân và phép cộng: Tập lệnh FMA3 cho phép thực hiện
cả phép nhân và phép cộng trong một lệnh duy nhất. Điều này giúp tiết
kiệm thời gian và tăng tốc độ tính toán.
 Chính xác cao: Tập lệnh FMA3 sử dụng công thức FMA để tính toán, giúp
giảm sai số tính toán và tăng độ chính xác của kết quả.
 Hỗ trợ cho các phép tính vector: Tập lệnh FMA3 có khả năng xử lý các
phép tính vector, cho phép thực hiện cùng lúc nhiều phép tính trên một loạt
các giá trị.
 Tăng hiệu suất tính toán: Sử dụng tập lệnh FMA3 có thể giúp tăng hiệu
suất tính toán, đặc biệt là trong các ứng dụng đòi hỏi tính toán số học và đại
số phức tạp như phân tích hình ảnh, mô phỏng vật lý, xử lý âm thanh và
video, và nhiều ứng dụng khác.
Đặc điểm nổi bật của tập lệnh FMA4 gồm:

 Hiệu suất cao: Tập lệnh FMA4 cho phép thực hiện phép tính nhân và cộng
trong một bước, giúp tăng tốc độ thực thi các phép tính liên quan đến đại
lượng số học.
 Ít lỗi làm tròn số: Với việc thực hiện phép nhân và cộng trong một bước,
tập lệnh FMA4 giảm thiểu sai số tính toán so với việc thực hiện hai phép
tính riêng biệt.
 Hỗ trợ cho các ứng dụng đồ họa: Tập lệnh FMA4 được sử dụng rộng rãi
trong các ứng dụng đồ họa, như xử lý hình ảnh và video, để tăng hiệu suất
tính toán và đạt được kết quả chính xác hơn.
 Tiết kiệm thời gian và không gian: Bằng cách thực hiện phép nhân và
cộng trong một lệnh, tập lệnh FMA4 giúp tiết kiệm thời gian và không gian
trong việc lưu trữ và tính toán dữ liệu.
 Hỗ trợ bởi các bộ vi xử lý hiện đại: Tập lệnh FMA4 được hỗ trợ bởi một
số bộ vi xử lý hiện đại như AMD Bulldozer và Piledriver, giúp tận dụng
hiệu quả tính năng này.

Tóm lại, hai tập lệnh FMA3 và FMA4 đều có những điểm mạnh mẽ
riêng so với các tập lệnh khác. Để sử dụng được hai tập lệnh này cần chú ý sử
dụng những bộ vi xử lý có hỗ trợ hai tập lệnh này và các ứng dụng cũng cần
phải hỗ trợ sử dụng hai tập lệnh này.
3. Những bộ vi xử lý hỗ trợ tập lệnh FMA3 và FMA4

Tập lệnh FMA3 (Fused Multiply-Add 3) là một tập lệnh trong vi xử


lý, cho phép thực hiện cả phép nhân và phép cộng trong một lần tính toán. Điều
này giúp tăng tốc độ thực thi các phép toán số học phức tạp.

Dưới đây là một số bộ vi xử lý hỗ trợ tập lệnh FMA3:


 Intel:
 Kiến trúc Intel Haswell
 Kiến trúc Intel Broadwell
 Kiến trúc Intel Skylake
 AMD:
 AMD Bulldozer
 AMD Piledriver
 AMD Steamroller
 AMD Excavator

Còn về tập lệnh FMA4 thì chỉ được hỗ trợ trên những bộ vi xử lý của
AMD từ kiến trúc Bulldozer trở đi nhưng đã bị loại bỏ ở kiến trúc Zen.

You might also like