Tải bản đầy đủ (.pdf) (55 trang)

học phần kiến trúc máy tính đề tài gpu sức mạnh của chip đồ họa

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 (1.18 MB, 55 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THƠNG VIỆT HÀN

<b>Khoa Khoa Học Máy Tính</b>

<b>ĐỀ TÀI: GPU – SỨC MẠNH CỦA CHIP ĐỒ HỌA</b>

<b> Sinh viên thực hiện: Đặng Trần An-22AD001</b>

<b> Bùi Đức Dũng-22AD007</b>

<b> Nguyễn Xuân Phúc-22AD0</b>

Giảng viên hướng dẫn:<b>ThS. NGUYỄN THỊ HUYỀN TRANG</b>

Đà Nẵng, tháng 12 năm 2023

<i>Kiến trúc máy tính</i>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THƠNG VIỆT HÀN

<b>Khoa Khoa Học Máy Tính</b>

<b>ĐỀ TÀI: GPU – SỨC MẠNH CỦA CHIP ĐỒ HỌA</b>

Sinh viên: Đặng Trần An Mã:22AD001 Bùi Đức Dũng<b> </b>Mã: 22AD007 Nguyễn Xuân Phúc Mã: 22AD

Giảng viên hướng dẫn: <b>ThS.NGUYỄN THỊ HUYỀN TRANG</b>

Đà Nẵng, tháng 12 năm 20

<i>Kiến trúc máy tính</i>

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN</b>

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

<b>LỜI CẢM ƠN</b>

Cả nhóm chúng em xin chân thành cảm ơn cô Nguyễn Thị Huyền Trang cùng tất cả q thầy cơ trong khoa Khoa học máy tính đã giúp đỡ chúng em hoàn thành đồ án bài tập lớn cuối kỳ học phần Kiến trúc máy tính.

Sau một khoảng thời gian được học tập và nghiên cứu về kiến trúc của máy tính, chúng em đã lựa chọn "RISC-V và ngôn ngữ assembly" để làm đề tài cho nhóm mình. Đây là một cơ hội tốt cho nhóm chúng em tự tìm hiểu, áp dụng những kiến thức đã học, từ đó hình thành nên phương pháp nghiên cứu, tìm tịi, tiếp cận với khoa học cơng nghệ. Đồng thời trau dồi cho chúng em kỹ năng học tập năng động và sáng tạo.

Mặc dù nhóm em đã cố gắng tìm hiểu và khảo sát các thơng tin liên quan đến RISC-V và ngôn ngữ assembly, nhưng do khả năng cịn khá hạn hẹp nên khơng thể tránh khỏi những thiếu sót, những sai lầm trong q trình nghiên cứu đề tài. Vậy chúng em rất mong nhận được sự đóng góp ý kiến của các thầy cơ và các bạn để chương trình của chúng em được hoàn thiện và tốt hơn!

Chúng em xin chân thành cảm ơn!

<i>Sinh viên thực hiện</i>

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b>MỞ ĐẦU</b>

Trong những năm đầu, RISC-V chỉ là một kiến trúc tập lệnh mới và chưa được biết đến rộng rãi. Tuy nhiên, với sự gia tăng đáng kể về nhu cầu tính tốn, nó đã trở thành một phần quan trọng trong máy tính hiện đại.

Vào những năm 2010, RISC-V bắt đầu được triển khai trong một số thiết bị nhúng, chẳng hạn như máy tính bảng, điện thoại thơng minh và thiết bị IoT. Những thiết bị này yêu cầu bộ xử lý hiệu quả về năng lượng và chi phí thấp, và RISC-V đáp ứng được những yêu cầu đó.

Trong thập kỷ sau đó, RISC-V tiếp tục được phát triển và ngày càng được sử dụng trong nhiều ứng dụng khác nhau. Nó đã được triển khai trong các máy tính trung tâm, chẳng hạn như siêu máy tính, và trong các thiết bị học máy.

Trong những năm gần đây, RISC-V cũng đã trở thành một lựa chọn phổ biến cho việc lập trình bằng ngơn ngữ assembly. Ngơn ngữ assembly là một ngôn ngữ máy cấp thấp cho phép lập trình viên kiểm sốt trực tiếp bộ xử lý. RISC-V có một tập lệnh đơn giản và dễ học, khiến nó trở thành một lựa chọn tốt cho việc lập trình bằng ngơn ngữ assembly.

Tóm lại, RISC-V đã trải qua một sự phát triển đáng kể từ những năm đầu cho đến ngày nay. Từ một kiến trúc tập lệnh mới, nó đã trở thành một cơng nghệ mạnh mẽ và tiên tiến có ảnh hưởng lớn đến thế giới máy tính. Sự phát triển tiếp tục của RISC-V hứa hẹn mang đến nhiều cơ hội sáng tạo và đưa ra những tiến bộ đáng kể trong tương lai.

<i>Khoa khoa học máy tính </i>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>DANH MỤC TỪ VIẾT TẮT...vii</b>

<b>Chương 1 - TỔNG QUAN VỀ GPU...1</b>

1.1. Vài nét về GPU...1

1.1.1. 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)...1

1.1.2. 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 <i>Khoa khoa học máy tính </i>

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

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 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

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 tố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 tốn, và kết quả có thể được ghi trở lại thanh ghi hoặc lưu

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

* Extension:...4

* Ứng Dụng Cụ Thể:...4

* Phiên Bản và Tiêu Chuẩn:...5

1.4. Sự khác nhau giữa CPU và GPU...5

-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...7

2.2. Cách thức hoạt động:...7

2.3. Thành phần của ngôn ngữ Assembly:...9

2.4. 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 q 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 <i>Khoa khoa học máy tính </i>

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

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

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ì ngồ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...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 <i>Khoa khoa học máy tính </i>

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

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...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 tồ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...9

Chỉ dẫn .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...9

Chỉ dẫn .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 <i>Khoa khoa học máy tính </i>

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

2.4.3. 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

VKU - ICT...9

Subject: Computer Architecture...9

Group 4...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

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

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

.Model Small...9

.Stack 100h...9

.Data... 9

MyChildren DB ‘University of Da Nang’,0Ah,0Dh...9

DB ‘VKU - ICT’ ,0Ah,0Dh...9

DB ‘Subject: Computer Architecture’ ,0Ah,0Dh...9

</div><span class="text_page_counter">Trang 43</span><div class="page_container" data-page="43">

Ví dụ: địa chỉ COM1 = 378h mov dx,378h in al,dx

<b>2.6.1.6. Lệnh OUT</b>

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ờ.

<b>2.6.1.7. Lệnh LEA (load Efective address)</b>

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ể.

<b>2.6.1.8. Lệnh LES (Load register and ES with words from memory)</b>

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

</div><span class="text_page_counter">Trang 44</span><div class="page_container" data-page="44">

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

<b>2.6.1.9. Lệnh LDS (Load resgister and DS with words from memory)</b>

Cú pháp: ADD dest, source

Chức năng: lấy tốn hạng đích cộng với tốn hạng nguồn rồi đưa vào tốn hạng đích dest = dest + source

</div><span class="text_page_counter">Trang 45</span><div class="page_container" data-page="45">

Chức năng: Tăng tốn hạng đích thêm 1.

Có hai trường hợp tổ chức phép nhân: Nếu source là 8 bit thì AX = AL * source Nếu source là 16 bit thì DX:AX = AX * source Tác động đến cờ: C, O.

<b>2.6.2.5. Lệnh DIV</b>

Cú pháp: DIV SRC

Chức năng: Chia hai tốn hạng với số khơng dấu Hai trường hợp tổ chức phép chia:

Nếu số 16 bits chia cho số 8 bits

Trang 26

</div><span class="text_page_counter">Trang 48</span><div class="page_container" data-page="48">

VD: shl ax,1

<b>2.6.3.5. Lệnh SHR (Shift Right)</b>

Cú pháp: SHR DST, CL

Chức năng: dịch phải logic các bit của toán hạng đích đi một số lần nào đó (số lần dịch được cất trong thanh ghi CL).

Chức năng: quay vịng sang trái các bit của tốn hạng đích đi một số lần nào đó (số lần dịch được cất trong thanh ghi CL). Trong mỗi lần quay giá trị bit cao nhất vừa chuyển vào thanh ghi cờ CF đồng thời chuyển vào bit thấp nhất

Tác động đến cờ: C, O VD:rol ax,1

<b>2.6.3.7. Lệnh TEST</b>

Cú pháp: TEST dest, source

Tương tự tốn hạng AND nhưng khơng lưu kết quả Ảnh hưởng các cờ: CF, OF, PF, ZF, SF

Trang 29

</div><span class="text_page_counter">Trang 50</span><div class="page_container" data-page="50">

Cú pháp: RET (nằm ở cuối chương trình con)

Chức năng: quay về chương trình đã gọi chương trình con

<b>2.6.5.3. Lệnh INT</b>

Cú pháp: int n (số ngắt viết theo số hexa)

Chức năng: Kích hoạt một ngắt (chuyển sang chạy chương trình con phục vụ ngắt)

</div><span class="text_page_counter">Trang 51</span><div class="page_container" data-page="51">

Chú ý: Bước nhảy của lệnh jump < 64k

<b>2.6.5.6. Lệnh LOOP (for của ASM)</b>

Cú pháp: mov cx, số lần lặp; số lần lặp ≥ 1

Chức năng: lặp đi lặp lại khối lệnh ASM nằm giữa nhãn và loop cho đến khi cx = 0. Mỗi khi thực hiện một vòng lặp giá trị của CX giảm đi 1.

Chức năng: Đưa giá trị cờ CF lên 1, CF = 1 Chức năng: Đưa giá trị cờ CF lên 1, CF = 1

</div>

×