Tải bản đầy đủ (.docx) (12 trang)

Kiến trúc vector Kiến trúc máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (444.11 KB, 12 trang )

Kiến trúc vector
Kiến trúc vectơ lấy tập hợp các phần tử dữ liệu nằm rải rác trong bộ nhớ, đặt chúng vào các
tệp thanh ghi tuần tự lớn, thao tác trên dữ liệu trong các tệp thanh ghi đó, rồi phân tán kết quả
trở lại bộ nhớ. Một lệnh duy nhất hoạt động trên các vectơ dữ liệu, dẫn đến hàng chục hoạt
động thanh ghi trên các phần tử dữ liệu độc lập.
Các tệp thanh ghi lớn này hoạt động như bộ đệm được điều khiển bởi trình biên dịch, vừa để
che giấu độ trễ của bộ nhớ vừa để tận dụng băng thơng bộ nhớ. Bởi vì tải và lưu trữ vectơ
được phân chia sâu, chương trình chỉ trả độ trễ bộ nhớ dài một lần cho mỗi lần tải vectơ hoặc
lưu trữ so với một lần cho mỗi phần tử, do đó phân bổ độ trễ qua 32 phần tử. Thật vậy, các
chương trình vectơ cố gắng giữ cho bộ nhớ bận rộn.

Phần mở rộng RV64V
Các thành phần chính của kiến trúc tập lệnh của RV64V như sau:

-Thanh ghi vectơ—Mỗi thanh ghi vectơ chứa một vectơ duy nhất và RV64V có 32 trong số
chúng, mỗi thanh ghi rộng 64 bit. Tệp đăng ký vectơ cần cung cấp đủ cổng để cung cấp tất cả
các đơn vị chức năng vectơ. Các cổng này sẽ cho phép mức độ chồng chéo cao giữa các phép
toán vectơ đến các thanh ghi vectơ khác nhau. Các cổng đọc và ghi, có tổng số ít nhất 16
cổng đọc và 8 cổng ghi, được kết nối với các đầu vào hoặc đầu ra của đơn vị chức năng bằng
một cặp công tắc thanh ngang. Một cách để tăng băng thông tệp đăng ký là soạn nó từ nhiều
ngân hàng, hoạt động tốt với các vectơ tương đối dài.


-Đơn vị chức năng vectơ—Mỗi đơn vị hoàn toàn được định hướng trong q trình triển khai
của chúng tơi và nó có thể bắt đầu hoạt động mới trên mọi chu kỳ đồng hồ. Một đơn vị điều
khiển là cần thiết để phát hiện các mối nguy, cả mối nguy về cấu trúc đối với các đơn vị chức
năng và mối nguy về dữ liệu trên các truy cập thanh ghi.Hình 4.1 cho thấy rằng chúng tơi giả
định việc triển khai RV64V có năm đơn vị chức năng. Để đơn giản, chúng tôi tập trung vào
các đơn vị chức năng dấu phẩy động trong phần này.
-Đơn vị lưu trữ / tải vectơ—Đơn vị bộ nhớ vectơ tải hoặc lưu trữ một vectơ đến
hoặc từ bộ nhớ. Các tải và lưu trữ vectơ được kết hợp đầy đủ trong quá trình triển khai


RV64V giả định của chúng ta để các từ có thể được di chuyển giữa các thanh ghi vectơ và bộ
nhớ với băng thông là một từ trên mỗi chu kỳ đồng hồ, sau độ trễ ban đầu. Đơn vị này cũng sẽ
thường xử lý các tải và lưu trữ vô hướng
-Một tập hợp các thanh ghi vô hướng—Tương tự như vậy, thanh ghi vơ hướng có thể cung
cấp dữ liệu làm đầu vào cho các đơn vị chức năng vectơ, cũng như tính tốn các địa chỉ để
chuyển đến đơn vị tải / lưu trữ vectơ. Đây là 31 thanh ghi mục đích chung bình thường và 32
thanh ghi dấu phẩy động của RV64G. Một đầu vào của các đơn vị hàm vectơ sẽ chốt các giá
trị vô hướng khi chúng được đọc ra khỏi tệp thanh ghi vơ hướng.
Ta có hình 4.2:


Hình 4.2 liệt kê các hướng dẫn vectơ RV64V mà ta sử dụng trong phần này. Mơ tả trong
Hình 4.2 giả sử rằng các toán hạng đầu vào là tất cả các thanh ghi vectơ, nhưng cũng có các
phiên bản của các lệnh này trong đó tốn hạng có thể là một thanh ghi vô hướng-Mặc dù các
kiến trúc vectơ truyền thống không hỗ trợ hiệu quả các kiểu dữ liệu hẹp, các vectơ tự nhiên
thích ứng với các kích thước dữ liệu khác nhau .Do đó, nếu một thanh ghi vectơ có 32 phần
tử 64 bit, thì các phần tử 128-16 bit và thậm chí cả các phần tử 256-8 bit đều là các khung
nhìn hợp lệ như nhau. Sự đa dạng về phần cứng như vậy là lý do tại sao một kiến trúc vector
có thể trở thành các ứng dụng đa phương tiện hữu ích cũng như cho các ứng dụng khoa học.
-Lưu ý rằng các hướng dẫn RV64V trong Hình 4.2 qua kiểu dữ liệu và kích thước


-Một cải tiến của RV64V là liên kết kiểu dữ liệu và kích thước dữ liệuvới mỗi thanh ghi
vectơ, chứ không phải là cách tiếp cận thông thường của hướng dẫn cung cấp thơng tin đó.
Do đó, trước khi thực hiện các lệnh vectơ, một chương trình cấu hình các thanh ghi vectơ
đang được sử dụng để chỉ định kiểu dữ liệu và độ rộng của chúng. Hình 4.3 liệt kê các tùy
chọn cho RV64V.

Hình 4.3 Kích thước dữ liệu được hỗ trợ cho RV64V giả sử nó cũng có phần mở rộng dấu
phẩy động chính xác đơn và kép RVS và RVD. Thêm RVV vào thiết kế RISC-V như vậy có

nghĩa là đơn vị vơ hướng cũng phải thêm RVH, là phần mở rộng lệnh vô hướng để hỗ trợ dấu
chấm động IEEE 754 nửa chính xác (16-bit). Bởi vì RV32V sẽ khơng có các phép tốn vơ
hướng từ kép, nó có thể loại bỏ các số nguyên 64-bit khỏi đơn vị vectơ. Nếu triển khai RISCV không bao gồm RVS hoặc RVD, nó có thể bỏ qua các hướng dẫn dấu phẩy động vectơ.
Lợi ích của việc nhập thanh ghi động:
-

Nhập động cũng cho phép các chương trình vơ hiệu hóa các thanh ghi vectơ khơng sử
dụng. Do đó, các thanh ghi vectơ được kích hoạt được cấp phát tất cả bộ nhớ vectơ

-

dưới dạng các vectơ dài.
Một phàn nàn về kiến trúc vectơ là trạng thái lớn hơn của chúng có nghĩa là thời gian
chuyển đổi ngữ cảnh chậm hơn. Việc triển khai RV64V của chúng tôi làm tăng hệ số
trạng thái 3: từ 2-32-8¼512 byte đến 2-32-1024¼1536 byte. Một tác dụng phụ thú vị
của việc nhập thanh ghi động là chương trình có thể định cấu hình các thanh ghi vectơ
nhưVơ hiệu hóa khi chúng khơng được sử dụng, vì vậy khơng cần phải lưu và khơi

-

phục chúng trên một cơng tắc ngữ cảnh.
Lợi ích thứ ba của việc nhập thanh ghi động là các chuyển đổi giữa các tốn hạng kích
thước khác nhau có thể được ngầm hiểu tùy thuộc vào cấu hình của các thanh ghi chứ
không phải là các hướng dẫn chuyển đổi rõ ràng bổ sung

Các hoạt động của bộ xử lý vector
Chúng ta có thể hiểu rõ nhất về bộ xử lý vectơ bằng cách xem xét vòng lặp vectơ cho RV64V.
Xét bài tốn vector điển hình:
Y=a-X+Y
X và Y là các vectơ, ban đầu nằm trong bộ nhớ, và là một vector vơ hướng . Vịng lặp

SAXPY hoặc DAXPY tạo thành vòng lặp bên trong của điểm chuẩn Linpack .Linpack là một


tập hợp các quy trình đại số tuyến tính và điểm chuẩn Linpack bao gồm các quy trình để thực
hiện loại bỏ Gaussian.
Ví dụ: Hiển thị mã cho RV64G và RV64V cho vịng lặp DAXPY. Đối với ví dụ này, giả sử
rằng X và Y có 32 phần tử và địa chỉ bắt đầu của X và Y đang ở x5 và x6, tương ứng.
Bài giải:
Đây là mã RISC-V:
Fld

f0,a

addi

x28,x5,#256

# Last address to load

Loop: fld

f1,0(x5)

# Load X[i]

fmul.d

# Load scalar a

f1,f1,f0


# a x X[i]

fld

f2,0(x6)

# Load Y[i]

fadd.d

f2,f2,f1

# a x X[i] + Y[i]

fsd

f2,0(x6)

# Store into Y[i]

addi

x5,x5,#8

# Increment index to X

addi

x6,x6,#8


# Increment index to Y

bne

x28,x5,Loop # Check if done

Đây là mã RV64V cho DAXPY:
vsetdcfg

4*FP64

fld

f0,a

# Load scalar a

vld

v0,x5

# Load vector X

vmul

v1,v0,f0

# Vector-scalar mult


vld

v2,x6

# Load vector Y

vadd

v3,v1,v2

# Vector-vector add

vst

v3,x6

# Store the sum

vdisable

# Enable 4 DP FP vregs

# Disable vector regs


Lưu ý rằng trình hợp dịch xác định phiên bản của các hoạt động vectơ sẽ tạo ra. Bởi vì phép
nhân có một tốn hạng vơ hướng, nó tạo ravmul.vs, trong khi phần bổ sung thì khơng, vì vậy
nó tạo ra vadd.vv.
Lệnh ban đầu cấu hình bốn thanh ghi vectơ đầu tiên để chứa dữ liệu dấu phẩy động 64-bit.
Lệnh cuối cùng vơ hiệu hóa tất cả các thanh ghi vectơ. Nếu một chuyển đổi ngữ cảnh xảy ra

sau lệnh cuối cùng, khơng có trạng thái bổ sung nào để lưu.
Điểm khác biệt ấn tượng nhất giữa mã lệnh và mã hiệu lệnh là bộ xử lý vectơ làm giảm đáng
kể băng thông lệnh động, chỉ thực hiện 8 lệnh so với 258 lệnh cho RV64G. Việc giảm này
xảy ra do các hoạt động vectơ hoạt động trên 32 phần tử và các lệnh trên đầu tạo thành gần
một nửa vịng lặp trên RV64G khơng có trong mã RV64V. Khi trình biên dịch tạo ra các lệnh
vectơ cho một trình tự như vậy và mã kết quả dành phần lớn thời gian của nó để chạy ở chế
độ vectơ, mã được cho là vectơ hóa hoặc vectơ. Các vịng lặp có thể được vectơ hóa khi
chúng khơng có sự phụ thuộc giữa các lần lặp của một vòng lặp, được gọi là phụ thuộc vòng
lặp . Một sự khác biệt quan trọng khác giữa RV64G và RV64V là tần suất của các khóa
đường ống để thực hiện đơn giản RV64G. Trong mã RV64G đơn giản, mọi fadd.d phải đợi
fmul.d, và mọi thứ fsd phải đợi cho fadd.d. Trên bộ xử lý vectơ, mỗi lệnh vectơ sẽ chỉ dừng
lại đối với phần tử đầu tiên trong mỗi vectơ, và sau đó các phần tử tiếp theo sẽ trôi chảy một
cách nhẹ nhàng trong đường ống. Do đó, các đường ống chỉ được yêu cầu một lần cho mỗi
vectơ hướng dẫn,thay vì một lần cho mỗi vectơ yếu tố. Các kiến trúc sư vector gọi chuyển
tiếp các hoạt động phụ thuộc yếu tố chuỗi, trong đó các hoạt động phụ thuộc được "xâu
chuỗi" với nhau.

Thời gian thực hiện vector
Thời gian thực hiện của một chuỗi các phép toán vectơ chủ yếu phụ thuộc vào ba yếu tố:
+ độ dài của các vectơ toán hạng
+ nguy cơ cấu trúc giữa các phép toán
+ sự phụ thuộc vào dữ liệu.
Tất cả các máy tính vectơ hiện đại đều có đơn vị hàm vectơ với nhiều đường ống song song
(hoặc làn đường) có thể tạo ra hai hoặc nhiều kết quả cho mỗi chu kỳ đồng hồ, nhưng chúng
cũng có thể có một số đơn vị chức năng khơng được phân chia hồn tồn. Để đơn giản, việc
triển khai RV64V của chúng tơi có một làn với tốc độ khởi tạo là một phần tử trên mỗi chu
kỳ đồng hồ cho các hoạt động riêng lẻ. Do đó, thời gian thực hiện trong các chu kỳ đồng hồ
cho một lệnh vectơ đơn lẻ là xấp xỉ độ dài vectơ. Để đơn giản hóa việc thảo luận về thực thi



vectơ và hiệu suất vectơ, ta sử dụng khái niệm hộ tống, là tập hợp các lệnh vectơ có khả năng
thực thi cùng nhau.

Từng cách tối ưu hóa kiến trúc vectơ và Phụ lục G đi sâu hơn.
Một ưu điểm quan trọng của tập lệnh vectơ là nó cho phép phần mềm chuyển một lượng lớn
công việc song song sang phần cứng chỉ bằng một lệnh ngắn duy nhất. Một lệnh vectơ có thể
bao gồm điểm số của các hoạt động độc lập nhưng được mã hóa theo cùng một số bit như
một lệnh vô hướng thông thường. Ngữ nghĩa song song của một lệnh vectơ cho phép một
triển khai thực hiện các hoạt động phần tử này bằng cách sử dụng một đơn vị chức năng có
liên kết sâu, như trong triển khai RV64V mà chúng tôi đã nghiên cứu cho đến nay; một mảng
các đơn vị chức năng song song; hoặc sự kết hợp của các đơn vị chức năng song song và
pipelined.Hình 4.4 minh họa cách cải thiện hiệu suất vectơ bằng cách sử dụng các đường ống
dẫn song song để thực hiện lệnh thêm vectơ.

Mỗi làn chứa một phần của tệp đăng ký vectơ và một đường dẫn thực thi từ mỗi đơn vị chức
năng vectơ. Mỗi đơn vị chức năng vectơ thực hiện các lệnh vectơ với tỷ lệ một nhóm phần tử
trên mỗi chu kỳ bằng cách sử dụng nhiều đường ống, một trên mỗi làn đường. Làn đầu tiên
chứa phần tử đầu tiên (phần tử 0) cho tất cả các thanh ghi vectơ, và do đó, phần tử đầu tiên


trong bất kỳ lệnh vectơ nào sẽ có tốn hạng nguồn và đích của nó nằm trong làn đầu tiên.
Việc phân bổ này cho phép đường ống số học cục bộ đến làn đường hồn thành hoạt động
mà khơng cần giao tiếp với các làn đường khác.
Thêm nhiều làn đường là một kỹ thuật phổ biến để cải thiện hiệu suất vectơ vì nó u cầu
tăng độ phức tạp điều khiển một chút và không yêu cầu thay đổi mã máy hiện có. Nó cũng
cho phép các nhà thiết kế đánh đổi diện tích khn, tốc độ xung nhịp, điện áp và năng lượng
mà không phải hy sinh hiệu suất cao nhất. Nếu tốc độ đồng hồ của một bộ xử lý vectơ giảm
một nửa, số làn đường tăng gấp đôi sẽ giữ nguyên hiệu suất cao nhất.

Thanh ghi độ dài vectơ: Xử lý các vịng lặp khơng bằng 32

Một bộ xử lý thanh ghi vectơ có độ dài vectơ tự nhiên được xác định bởi độ dài vectơ lớn
nhất(mvl).

Xét mã sau:
for (i=0;iY[i]=a*X[i] +Y[i];
Kích thước của tất cả các phép tốn vectơ phụ thuộc vào n, thậm chí có thể không được biết
cho đến thời gian chạy. Giá trị của n cũng có thể là một tham số của một thủ tục có chứa vịng
lặp trước đó và do đó có thể thay đổi trong q trình thực thi.
Giải pháp cho những vấn đề này là thêm một Thanh ghi độ dài vectơ (vl). Các vl kiểm soát độ
dài của bất kỳ hoạt động vectơ nào, bao gồm tải hoặc lưu trữ vectơ. Điều này giải quyết vấn


đề của chúng ta miễn là độ dài thực nhỏ hơn hoặc bằng độ dài vectơ lớn nhất (mvl). Tham số
này có nghĩa là độ dài của thanh ghi vectơ có thể phát triển trong các thế hệ máy tính sau này
mà không cần thay đổi tập lệnh.
Mã RV64V cho vector DAXPY cho bất kỳ giá trị nào của n.
vsetdcfg

2 DP FP

# Enable 2 64b Fl.Pt. registers

fld

f0,a

# Load scalar a

loop: setvl


t0,a0

# vl = t0 = min(mvl,n)

vld

v0,x5

# Load vector X

slli

t1,t0,3

# t1 = vl * 8 (in bytes)

add

x5,x5,t1

# Increment pointer to X by vl*8

vmul

v0,v0,f0

# Vector-scalar mult

vld


v1,x6

# Load vector Y

vadd

v1,v0,v1

# Vector-vector add

sub

a0,a0,t0

# n -= vl (t0)

vst

v1,x6

# Store the sum into Y

add

x6,x6,t1

# Increment pointer to Y by vl*8

bnez


a0,loop

# Repeat if n != 0

vdisable

# Disable vector regs

Xử lý câu lệnh IF trong vòng lặp vectơ
Xét vòng lặp :
For(i= 0; i<64; i++)
If(X[i] != 0)
X[i] = X[i] – Y[i];
Vịng lặp này thường khơng thể được vectơ hóa vì thực thi có điều kiện của phần thân; tuy
nhiên, nếu vịng lặp bên trong có thể được chạy cho các lần lặp mà X [i]6¼0, thì phép trừ có
thể được vector hóa. Phần mở rộng phổ biến cho khả năng này là điều khiển vector-mặt nạ.
Trong RV64V, các thanh ghi vị từ giữ mặt nạ và về cơ bản cung cấp việc thực thi có điều kiện
đối với mỗi hoạt động phần tử trong một lệnh vectơ. Các thanh ghi này sử dụng một vectơ
Boolean để điều khiển việc thực thi một lệnh vectơ, cũng giống như các lệnh được thực thi có


điều kiện sử dụng một điều kiện Boolean để xác định xem có thực thi một lệnh vơ hướng hay
khơng .Khi đăng ký vị từ p0 được thiết lập, tất cả các lệnh vectơ sau chỉ hoạt động trên các
phần tử vectơ có mục nhập tương ứng trong thanh ghi vị từ là 1. Các mục nhập trong thanh
ghi vectơ đích tương ứng với số 0 trong thanh ghi mặt nạ không bị ảnh hưởng bởi hoạt động
vectơ. Giống như thanh ghi vectơ, thanh ghi vị từ được cấu hình và có thể bị vơ hiệu hóa.
Việc kích hoạt thanh ghi vị từ sẽ khởi tạo nó trong tất cả 1 s, có nghĩa là các lệnh vectơ tiếp
theo hoạt động trên tất cả các phần tử vectơ.
Hình 4.6: thanh ghi


Ngân hàng bộ nhớ: Cung cấp băng thông cho các đơn vị lưu trữ / tải vectơ
Hành vi của đơn vị vectơ tải / lưu trữ phức tạp hơn đáng kể so với các đơn vị chức năng số
học. Thời gian khởi động tải là thời gian để đưa từ đầu tiên từ bộ nhớ vào thanh ghi. Nếu phần
còn lại của vectơ có thể được cung cấp mà khơng bị đình trệ, thì tốc độ khởi tạo vectơ bằng
tốc độ mà các từ mới được tìm nạp hoặc lưu trữ. Không giống như các đơn vị chức năng đơn
giản hơn, tốc độ khởi tạo có thể khơng nhất thiết phải là 1 chu kỳ đồng hồ vì các gian hàng
của ngân hàng bộ nhớ có thể làm giảm thơng lượng hiệu quả.
Hầu hết các bộ xử lý vectơ sử dụng các ngân hàng bộ nhớ, cho phép một số truy cập độc lập
thay vì xen kẽ bộ nhớ đơn giản vì ba lý do:
1. Nhiều máy tính vectơ hỗ trợ nhiều lần tải hoặc lưu trữ trên mỗi chu kỳ đồng hồ, và thời
gian chu kỳ của ngân hàng bộ nhớ thường lớn hơn nhiều lần so với thời gian chu kỳ của bộ xử
lý. Để hỗ trợ truy cập đồng thời từ nhiều tải hoặc nhiều cửa hàng, hệ thống bộ nhớ cần có
nhiều ngân hàng và cần có khả năng kiểm sốt địa chỉ tới các ngân hàng một cách độc lập.
2. Hầu hết các bộ xử lý vectơ đều hỗ trợ khả năng tải hoặc lưu trữ các từ dữ liệu khơng theo
trình tự. Trong những trường hợp như vậy, cần có địa chỉ ngân hàng độc lập, thay vì xen kẽ.
3. Hầu hết các máy tính vectơ hỗ trợ nhiều bộ xử lý chia sẻ cùng một hệ thống bộ nhớ, vì vậy
mỗi bộ xử lý sẽ tạo ra dòng địa chỉ riêng biệt của riêng nó.

Stride: Xử lý mảng đa chiều trong kiến trúc vectơ
Xét ma trận nhân trong C:
for (i = 0; i < 100; i=i+1)
for (j = 0; j < 100; j=j+1) {


A[i][j] = 0.0;
for (k = 0; k < 100; k=k+1)
A[i][j] = A[i][j] + B[i][k] * D[k][j]; }
Khoảng cách phân tách các phần tử để được tập hợp vào một thanh ghi vectơ duy nhất được
gọi là sải bước. Trong ví dụ này, ma trận D có khoảng cách là 100 từ kép (800 byte) và ma

trận B sẽ có khoảng cách là 1 từ kép (8 byte). Đối với thứ tự columnmajor, được Fortran sử
dụng, các bước sẽ bị đảo ngược. Ma trận D sẽ có khoảng cách là 1 hoặc 1 từ kép (8 byte),
phân tách các phần tử liên tiếp, trong khi ma trận B sẽ có khoảng cách là 100 hoặc 100 từ kép
(800 byte). Do đó, nếu khơng sắp xếp lại các vịng lặp, trình biên dịch không thể ẩn khoảng
cách dài giữa các phần tử liên tiếp cho cả B và D. Khi một vectơ được tải vào một thanh ghi
vectơ, nó sẽ hoạt động như thể nó có các phần tử liền kề về mặt logic. Do đó, một bộ xử lý
vectơ có thể xử lý các bước lớn hơn một, được gọi lànhững bước tiến phi đơn vị, chỉ sử dụng
tải vectơ và các hoạt động lưu trữ vectơ với khả năng sải bước. Khả năng truy cập các vị trí bộ
nhớ khơng tuần tự và định hình lại chúng thành một cấu trúc dày đặc là một trong những lợi
thế chính của kiến trúc vectơ.

Gather-Scatter: Xử lý ma trận thưa thớt trong kiến trúc vector
Ma trận thưa thớt thì phổ biến, vì vậy điều quan trọng là phải có kỹ thuật để cho phép các
chương trình có ma trận thưa thớt thực thi ở chế độ vectơ. Trong một ma trận thưa thớt, các
phần tử của một vectơ thường được lưu trữ ở một số dạng nén và sau đó được truy cập gián
tiếp.
Cơ chế chính để hỗ trợ ma trận thưa thớt là hoạt động tập hợp-phân tán sử dụng vectơ chỉ
mục. Mục tiêu của các hoạt động như vậy là để hỗ trợ việc di chuyển giữa biểu diễn nén (tức
là khơng bao gồm số khơng) và biểu diễn bình thường (tức là bao gồm số không) của một ma
trận thưa thớt. Môt tụ họp hoạt động mất một vectơ chỉ số và tìm nạp vectơ có các phần tử ở
các địa chỉ đã cho bằng cách thêm địa chỉ cơ sở vào các hiệu số được đưa ra trong vectơ chỉ
mục. Kết quả là một vectơ dày đặc trong một thanh ghi vectơ. Sau khi các phần tử này được
vận hành một cách dày đặc biểu mẫu, vectơ thưa thớt có thể được lưu trữ ở dạng mở rộng bởi
tiêu tan lưu trữ, sử dụng cùng một vectơ chỉ mục. Hỗ trợ phần cứng cho các hoạt động như
vậy được gọi làtập hợp-phân tán, và nó xuất hiện trên gần như tất cả các bộ xử lý vectơ hiện
đại.

Lập trình kiến trúc vector
Một lợi thế của kiến trúc vectơ là trình biên dịch có thể cho các lập trình viên biết tại thời
điểm biên dịch liệu một phần mã có được vectơ hóa hay khơng, thường đưa ra các gợi ý tại

sao nó khơng vectơ hóa mã. Mơ hình thực thi đơn giản này cho phép các chuyên gia trong các
lĩnh vực khác tìm hiểu cách cải thiện hiệu suất bằng cách sửa đổi mã của họ hoặc bằng cách
đưa ra gợi ý cho trình biên dịch khi có thể giả định sự độc lập giữa các hoạt động, chẳng hạn
như truyền dữ liệu phân tán tập hợp. Chính cuộc đối thoại này giữa trình biên dịch và lập trình
viên, mỗi bên đưa ra gợi ý cho bên kia về cách cải thiện hiệu suất, giúp đơn giản hóa việc lập
trình máy tính vectơ.




×