Chương 1 - TỔNG QUAN VỀ GPU. Vài nét về GPU. Khái niệm - RISC-V (phát âm là "risk-năm") là một kiến trúc tập lệnh(ISA) phần cứng mã nguồn mở dựa trên kiến trúc tập lệnh máy tính với tập lệnh đơn giản hóa (RISC). Lịch sử hình thành và phát triểned - Giai đoạn 2010-2015.1 Ý tưởng về RISC-V bắt đầu từ những năm 2000, khi các nhà nghiên cứu tại Đại học California, Berkeley, bắt đầu suy nghĩ về cách tạo ra một kiến trúc tập lệnh linh hoạt và hiệu quả hơn.
Dự án chính thức được công bố vào năm 2010, và trong năm đầu tiên, nhóm đã phát hành phiên bản đầu tiên của kiến trúc RISC-V.1 - Giai đoạn 2010-2015: Khởi đầu của RISC-V.2 Năm 2015, Hiệp hội RISC-V (RISC-V Foundation) được thành lập để quản lý và thúc đẩy sự phát triển của kiến trúc RISC-V. Hiệp hội đóng vai trò quan trọng trong việc xây dựng tiêu chuẩn, cung cấp tài nguyên hỗ trợ và tạo điều kiện cho sự hợp tác trong cộng đồng RISC-V.2 Năm 2016: SoC thương mại đầu tiên dựa trên RISC-V được phát hành. SoC này được phát triển bởi SiFive, một công ty khởi nghiệp có trụ sở tại Hoa Kỳ.2 iv Khoa khoa học máy tính RISC-V đã mở cửa cho cả cộng đồng nghiên cứu và doanh nghiệp. Sự linh hoạt và tính mở của nó đã thu hút sự quan tâm từ nhiều tổ chức lớn và những cá nhân có đam mê trong lĩnh vực kiến trúc máy tính.
Các công ty như NVIDIA, Western Digital, và Alibaba đã tham gia và ủng hộ sự phát triển của RISC-V.2 - Giai đoạn 2020-nay: Tiềm năng của RISC-V.2 Năm 2020, Tổ chức RISC-V đã phát hành phiên bản 2.0 của kiến trúc RISC- V. Phiên bản này bao gồm một số cải tiến về hiệu suất, bảo mật và mở rộng.2 Năm 2021, Intel đã công bố kế hoạch phát triển chip RISC-V cho các ứng dụng máy tính trung tâm. Đây là một bước ngoặt quan trọng cho RISC-V, vì nó cho thấy kiến trúc này có thể được sử dụng trong các ứng dụng đòi hỏi hiệu suất cao.2 Năm 2022, RISC-V đã được sử dụng trong một số sản phẩm thương mại quan trọng, bao gồm: SoC HiFive Unleashed của SiFive ,SoC Sipeed Maixduino của Sipeed ,. Cấu tạo và nguyên lý hoạt động.
Nguyên lý hoạt động.4 Kiến trúc máy tính RISC-V cũng được trang bị với các thành phần quan trọng nhằm tối ưu hóa hiệu suất xử lý. Nhưng thay vì đơn vị xử lý đồ họa như trong GPU, RISC-V tập trung vào nguyên tắc cơ bản của kiến trúc máy tính RISC (Reduced Instruction Set Computing).4 RISC-V duy trì kiến trúc Load-Store, trong đó tất cả các phép toán trên dữ liệu phải được thực hiện thông qua thanh ghi. Dữ liệu từ bộ nhớ được nạp vào thanh ghi trước khi thực hiện các phép toán, và kết quả có thể được ghi trở lại thanh ghi hoặc lưu trữ trong bộ nhớ.4 * Độ Dài Của Thanh Ghi:.4 * Tập Lệnh Cơ Bản:.4 v Khoa khoa học máy tính * Extension:.4 * Ứng Dụng Cụ Thể:.4 * Phiên Bản và Tiêu Chuẩn:. Sự khác nhau giữa CPU và GPU.
Ứng dụng thực tế.6 Lĩnh vực game.6 Một số lĩnh vực khác.6 Chương 2 - TỔNG QUAN VỀ ASSEMBLY.7 -Assembly là một loại ngôn ngữ lập trình cấp thấp được sử dụng cho bộ vi xử lý và các thiết bị có thể lập trình khác, được tạo ra bằng cách biên dịch mã nguồn từ một ngôn ngữ lập trình cấp cao. Assembly được thiết kế để giao tiếp trực tiếp với phần cứng máy tính. Cách thức hoạt động:. Thành phần của ngôn ngữ Assembly:.
Cấu trúc chương trình.9 Hầu hết các hệ điều hành máy tính hiện nay, đặc biệt là các hệ điều hành của Microsoft, đều hỗ trợ hai dạng cấu trúc tập tin thực thi có thể hoạt động trên nó, đó là tập tin cấu trúc dạng COM và tập tin cấu trúc dạng EXE.9 Có nhiều điểm khác nhau giữa hai cấu trúc chương trình này, nhưng điểm khác biệt lớn nhất là: Các chương trình cấu trúc dạng EXE gồm 3 đoạn: Mã lệnh (Code), dữ liệu (Data) và Ngăn xếp (Stack). Khi hoạt động, 3 đoạn này sẽ được nạp vào 3 đoạn (Segment) bộ nhớ tách biệt trên bộ nhớ. Các chương trình dạng COM thì ngược lại, nó chỉ có 1 đoạn mã lệnh, trong đó chứa cả mã lệnh, đoạn dữ liệu và ngăn xếp. Vì thế, khi được nạp vào bộ nhớ để hoạt động nó chỉ được cấp phát một đoạn bộ nhớ.9 Rõ ràng kích thước của một chương trình dạng COM không thể vượt quá giới hạn của một đoạn bộ nhớ (với Intel 8088/80286 và MSDOS, 1 Segment bộ nhớ = 64KB).
vi Khoa khoa học máy tính Trong khi đó một chương trình dạng EXE có thể lớn hơn 3 Segment bộ nhớ. Do đó, khi thiết kế các chương trình lớn, với chức năng phức tạp, trong đó có liên kết giữa các modun chương trình khác nhau thì ta phải thiết kế theo cấu trúc chương trình dạng EXE. 9 Hợp ngữ hỗ trợ thiết kế cả hai dạng cấu trúc chương trình EXE và COM, mỗi dạng phù hợp với một nhóm trình biên dịch nào đó. Muốn biên dịch một chương trình hợp ngữ sang dạng EXE thì ngoài việc nó phải được viết theo cấu trúc dạng EXE ta còn cần phải sử dụng một trình biên dịch phù hợp.
Điều này cũng tương tự với việc muốn có một chương trình thực thi dạng COM. Tệp tin dạng COM.9 Cấu trúc chương trình dạng COM:.Model <Chế độ bộ nhớ>.9 <Nhãn chính>:.9 JMP <Thủ tục chính>.9 <Khai báo dữ liệu đặt tại đây>.9 <Thủ tục chính> PROC.9 <Các lệnh của chương trình đặt tại đây>.9 <Thủ tục chính> Endp.9 <Các thủ tục khác đặt tại đây>.9 End <Nhãn chính>.9 Trong cấu trúc chương trình trên các từ khóa Model, Code, ORG, Proc, Endp, End là các hướng dẫn biên dịch. <Nhãn chính> là nhãn của lệnh Jmp.9 Cấu trúc này cho thấy rõ, một chương trình hợp ngữ dạng COM chỉ có 1 đoạn, đó chính là đoạn Code (đoạn mã lệnh), trong này bao gồm cả phần khai báo dữ liệu. Các khai báo dữ liệu trong chương trình dạng COM có thể đặt ở đầu hoặc ở cuối chương vii Khoa khoa học máy tính trình, nhưng với việc sử dụng định nghĩa đoạn đơn giản các khai báo dữ liệu phải đặt ở đầu chương trình.
9 Chỉ dẫn ORG 100h và lệnh JMP <Thủ tục chính> sẽ được đề cập trở lại ở các phần sau đây của tài liệu này. Tệp tin dạng EXE.9 Cấu trúc chương trình dạng EXE:.Model <Chế độ bộ nhớ>. 9 <Khai báo dữ liệu đặt tại đây>.9 <Thủ tục chính> PROC.9 <Các lệnh của chương trình đặt tại đây>.9 <Thủ tục chính> Endp.9 <Các thủ tục khác đặt tại đây>. 9 Trong cấu trúc chương trình trên các từ khóa Model, Code, Data, Stack, Proc, Endp, End là các hướng dẫn biên dịch.9 Cấu trúc này cho thấy rõ, một chương trình hợp ngữ dạng gồm 3 đoạn: đoạn Code, chứa toàn bộ mã lệnh của chương trình.
Đoạn Data, chứa phần khai báo dữ liệu của chương trình. Đoạn Stack, nơi chứa stack (ngăn xếp) của chương trình khi chương trình được nạp vào bộ nhớ để hoạt động.Stack đặt ở đầu chương trình với mục đích khai báo kích thước của Stack dùng cho chương trình sau này. Kích thước thường được chọn là 100h (256) byte.Model được đặt ở đầu cả cấu trúc chương trình dạng COM và EXE với mục đích khai báo chế độ bộ nhớ mà chương trình sử dụng.9 viii Khoa khoa học máy tính 2. Ví dụ về chương trình viết theo cấu trúc dạng COM và EXE.9 Đề bài: Hãy sử dụng hai chương trình hợp ngữ đơn giản, dạng COM và EXE để in ra màn hình 4 dòng văn bản như sau:.9 University of Da Nang.
9 Subject: Computer Architecture.9 Hai chương trình dưới đây chỉ có tác dụng minh họa cho việc sử dụng các hướng dẫn biên dịch định nghĩa đoạn đơn giản và giúp các bạn thấy được những điểm giống nhau, khác nhau giữa hai dạng cấu trúc chương trình dạng COM và EXE, vì vậy, á đây các bạn chưa cần quan tâm đến ý nghĩa của các lệnh và các hàm/ngắt trong nó. Phần lệnh hợp ngữ và các hàm/ngắt sẽ được trình bày ngay sau đây.9 Chương trình viết theo cấu trúc dạng COM:. 9 MyChildren DB ‘University of Da Nang’,0Ah,0Dh.9 DB ‘VKU - ICT’ ,0Ah,0Dh.9 DB ‘Subject: Computer Architecture’ ,0Ah,0Dh.9 ;------- in ra mot xau voi ham 09/21h -------.9 Lea Dx,MyChildren.9 ix Khoa khoa học máy tính Int 21h.9 ;-------ket thuc chuong trinh -------. 9 Chương trình này chọn chế độ bộ nhớ Small.
Tên thủ tục chính là Main (tên thủ tục chính là tùy ý). Nhãn chính của chương trình là Start (tên thủ tục chính là tùy ý), đó chính là nhãn của lệnh Jmp. Phần khai báo dữ liệu chỉ khai báo 1 biến, đó là MyChildren. 9 Chương trình này gọi ngắt 20h để kết thúc chương trình dạng COM.9 Chương trình viết theo cấu trúc dạng COM:.
9 MyChildren DB ‘University of Da Nang’,0Ah,0Dh.9 DB ‘VKU - ICT’ ,0Ah,0Dh.9 DB ‘Subject: Computer Architecture’ ,0Ah,0Dh.9 ;------- khoi tao DS -------.9 Mov Ax,@Data.9 Mov DS,Ax.9 ;------- in ra mot xau voi ham 09/21h -------.9 Lea Dx,MyChildren.9 x Khoa khoa học máy tính Ví dụ: địa chỉ COM1 = 378h mov dx,378h in al,dx 2. Lệnh OUT Cú pháp: OUT địa chỉ cổng,AL/AX Chức năng: đưa dữ liệu từ thanh ghi AL/AX ra cổng Chú ý: Nếu địa chỉ cổng <256 thì số địa chỉ đứng trực tiếp trong lệnh OUT Ví dụ: địa chỉ cổng là 1fh OUT 1fh,AL ; đưa nội dung AL ra cổng 1fh Nếu địa chỉ cổng 256 thì phải nhờ đến thanh ghi DX Ví dụ: địa chỉ COM1 = 378h mov dx,378h out dx,al Lệnh này không tác động đến cờ. Lệnh LEA (load Efective address) Cú pháp: lea reg16, mem Chức năng: lấy phần địa chỉ offset của biến đưa vào thanh ghi 16 bit Ví dụ: lea bx, Value hay mov bx, OFFSET Value Đích thường là các thanh ghi: BX, CX, DX, BP, SI, DI Nguồn là tên biến trong đoạn DS được chỉ rõ trong lệnh hay ô nhớ cụ thể. Lệnh LES (Load register and ES with words from memory) Cú pháp: les reg, mem Chức năng: chuyển giá trị của 1 từ(word) từ một vùng nhớ vào thanh ghi đích và giá trị của từ tiếp theo sau của vùng nhớ vào thanh ghi ES.
Trang 24 Trong đó: Đích là một trong các thanh ghi AX, BX,CX, DX, SP, BP, SI, DI. Gốc là ô nhớ trong đoạn DS được chỉ rõ trong lệnh 2. Lệnh LDS (Load resgister and DS with words from memory) Cú pháp: lds reg, mem Chức năng: Nạp một từ từ bộ nhớ vào thanh ghi cho trong lệnh và 1 từ tiếp theo vào DS. Các lệnh số học 2.
Lệnh ADD(addition) Cú pháp: ADD dest, source Chức năng: lấy toán hạng đích cộng với toán hạng nguồn rồi đưa vào toán hạng đích dest = dest + source Bảng 7. Lệnh ADD Tác động đến cờ: C, P, A, Z, S, O.