Kiến trúc và lập trình hệ vi xử lý vectơ mc
2.2.1 Các đặc trng cơ bản của phép xử lý vectơ
Một toán hạng vectơ là một tập hợp có thứ tự của n phần tử dữ liệu vô hớng cùng kiểu, với n là độ dài của vectơ. Mỗi phần tử trong một vectơ là một đại lợng vô hớng có thể là một số dấu phẩy động, một số nguyên, một giá trị lôgic hoặc một ký tự (byte)… Các phần tử trong một vectơ thờng đợc sắp xếp sao cho khoảng cách địa chỉ giữa chúng là cố định, đợc gọi là bớc địa chỉ (Stride).
Các phép xử lý vectơ cơ bản bao gồm 4 nhóm phép toán sau: 1. Nhóm các lệnh vectơ - vectơ: f1: Vi Vj f2: Vi ì Vj Vk 2. Nhóm các lệnh vectơ - vô hớng: f3: S ì Vi Vj 3. Nhóm các lệnh vectơ - bộ nhớ: f4: M V f5: V M 4. Nhóm các lệnh rút gọn vectơ: f6: Vi Sj f7: Vi ì Vj Sk
Trong đó V và S tơng ứng là các toán hạng vectơ và toán hạng vô h- ớng, còn M là toán hạng bộ nhớ, tơng ứng với một địa chỉ xác định trong bộ nhớ. Hình vẽ 2.1 mô tả một số kiểu lệnh vectơ ở trên.
Sau đây là một số ví dụ về các phép xử lý vectơ:
+ Cho V1 = (2,5,8,7). Sau lệnh nhân V2 = 2 ì V1 thu đợc vectơ V2 = (4,8,16,14) là một ví dụ cho kiểu lệnh f1.
+ Cho V1 = (2,5,8,7) và V2 = (9,3,6,4). Sau lệnh so sánh V3 = V1 > V2, vectơ Boolean V3 = (0,1,1,1) đợc tạo ra. Đây là một ví dụ cho kiểu lệnh f2.
+ Cho vectơ X = (1,2,3,4,5,6,7,8). Sau khi thực hiện lệnh rút gọn dạng Y = max Xi là phép tìm phần tử lớn nhất của X, đợc kết quả vô hớng Y = 8. Đó là một ví dụ điển hình cho kiểu lệnh f6.
Hầu hết các bộ xử lý vectơ có cấu trúc kiểu đờng ống (pipeline). Trong đó, các thao tác trong một chu kỳ lệnh đợc chia ra thành các chức năng con theo mối quan hệ về trình tự thời gian, mỗi tầng trong hệ vi xử lý
V1 V2 V1 V3 V2 S V2 V1 V2 S V3 (c) `(a) (b) (d) Hình 2.1. Một số kiểu lệnh vectơ
đờng ống tơng ứng với một chức năng con. Vì vậy, trong trờng hợp tổng quát, để phù hợp với phép xử lý hiệu ứng pipeline, các phép tính cần phải có các đặc tính sau:
a) Các quá trình (hoặc các hàm chức năng) đợc đòi hỏi lặp lại nhiều lần. Mỗi một quá trình lại có thể đợc phân chia thành các quá trình con (hoặc các hàm con).
b) Các toán hạng kế tiếp đợc vận chuyển qua các đoạn đờng ống và đòi hỏi phải có các bộ đệm và điều khiển cục bộ tơng ứng.
c) Các phép toán đợc thực hiện bằng các đờng ống riêng biệt có thể chia sẻ các tài nguyên chung nh bộ nhớ và các kênh trong hệ thống.
Các vectơ lệnh cần phải thực hiện cùng một phép toán trên các tập dữ liệu khác nhau. Đây là điểm khác so với xử lý vô hớng vì trong xử lý vô h- ớng các lệnh đợc thực hiện trên cặp toán hạng đơn lẻ. Một u điểm của xử lý vectơ so với xử lý vô hớng là khả năng loại trừ đợc phần mào đầu do kỹ thuật điều khiển lặp. Cũng bởi do sự giữ chậm khi bắt đầu khởi tạo (startup time) trong một đờng ống mà bộ xử lý vectơ sẽ thực hiện hiệu quả hơn đối với các vectơ dài hơn. Cấu trúc của một vectơ lệnh bao gồm các trờng sau:
1. Mã toán hạng (operation code) phải đợc xác lập để lựa chọn khối chức năng hoặc cấu hình lại một khối đa chức năng để thực hiện thao tác cụ thể. Thông thờng việc điều khiển các vi lệnh đợc sử dụng để thiết lập các tài nguyên đợc yêu cầu.
2. Đối với các lệnh tham chiếu bộ nhớ, địa chỉ cơ sở (base address) là cần thiết cho cả các toán hạng nguồn và các vectơ kết quả. Nếu các toán hạng và các kết quả đợc lu trong file thanh ghi vectơ thì phải chỉ rõ các thanh ghi vectơ đợc chọn.
3. Số gia địa chỉ (address increment) giữa các phần tử phải đợc chỉ rõ. Một số máy tính, nh STAR-100, ràng buộc các phần tử sao cho chúng đ- ợc lu trữ liên tiếp nhau trong bộ nhớ chính, nghĩa là với số gia luôn luôn là 1. Một số máy tính khác, nh TI-ASC, có thể có một số gia biến đổi, vì vậy có độ mềm dẻo cao trong các ứng dụng.
4. Địa chỉ offset (address offset) liên quan đến địa chỉ cơ sở cần phải đợc xác lập rõ ràng. Địa chỉ bộ nhớ hiệu dụng có thể đợc tính ra từ địa chỉ offset và địa chỉ cơ sở. Địa chỉ offset có thể là dơng hay âm, đa ra việc sử dụng các vectơ lệch để có đợc các truy nhập song song.
5. Độ dài vectơ (vectơ length) là cần thiết để xác định điểm kết thúc của một vectơ lệnh. Một vectơ mặt nạ có thể đợc sử dụng để che dấu các phần tử mà không làm thay đổi các nội dung của các vectơ gốc.