![]()
Hôm bữa mình có bài tìm hiểu về CPU, hôm nay giới thiệu tiếp tới anh em cách hoạt động và những thành phần quan trọng của 1 cái cạc đồ họa, hay cụ thể hơn là GPU (Graphic Processing Unit).
Vì sao không dùng CPU cho việc đồ họa?
Câu trả lời chính xác đó là CPU có thể làm được việc render hình ảnh chứ không phải là không. Ngày xưa khi mà GPU chưa phổ biến thì chúng ta đã có một số tựa game 3D rồi, ví dụ như Ultima Underworld, nó chạy hoàn toàn bằng CPU đấy. Ultima Underworld được dùng làm ví dụ vì nó có enginer render hình ảnh tiên tiến hơn so với các game nổi tiếng như Doom, bạn thậm chí còn có thể nhìn lên, nhìn xuống, rồi texture mapping nữa (texture mapping là một kĩ thuật phủ "lớp sơn" lên bề mặt của một vật thể ba chiều trong máy tính, ngày xưa thì đây là thứ rất phức tạp). Tất nhiên, vì game nặng như vậy nên không phải ai cũng có máy tính đủ mạnh để chơi. Vào thời kỳ đầu của game 3D, các tựa game như Half-Life, Quake II có hỗ trợ việc render bằng phần mềm để các máy tính không có phần cứng 3D riêng cũng chơi được.
![]()
Tuy nhiên, CPU được thiết kế để không phải để làm mấy chuyện này. Nó là bộ xử lý chung cho toàn máy tính. Bản thân nó đã phải lo nhiều thứ rồi: quản lý hệ điều hành, dịch lệch, giao tiếp với bộ nhớ, điều khiển các thiết bị ngoại vi cắm vào máy… Nếu bắt nó gánh thêm việc nữa thì tội nghiệp nó quá.
GPU?
GPU sinh ra để giải quyết vấn đề này. NVIDIA lần đầu sử dụng chữ GPU khi họ ra mắt card đồ họa GeForce 256 hỗ trợ tính toán bằng phần cứng. Lúc đó có nhiều công nghệ và kĩ thuật mới được đưa vào cạc đồ họa, và nguyên lý vẫn không khác nhiều tính tới thời điểm hiện tại. GPU chỉ xử lý việc về đồ họa thôi nên nó nhanh hơn so với những gì CPU có thể làm được, chưa kể GPU lại có những phần cứng rất chuyên biệt để xử lý nhiều thứ liên quan tới đồ họa máy tính.
Có sự liên quan giữa cách mà các 3D engine hoạt động với cách mà GPU được thiết kế ra. Cách hoạt động của chúng là tương đồng với nhau cho các bước như xây dựng hình khối, texture mapping, truy cập bộ nhớ, shader (tái tạo ánh sáng, bóng tối và màu sắc lên tấm ảnh được render ra).
Trong hình bên dưới lấy từ AMD, bạn có thể thấy cách mà GPU đã phát triển theo thời gian. Ở thời kỳ đầu, GPU chủ yếu giải các ma trận của hình học không gian và chạy các hàm số đổ bóng cố định. Sau đó nó bắt đầu có thêm bộ nhớ để chạy nhanh hơn, có nhiều pipeline để xử lý được nhiều việc hơn, có thêm các nhân đổ bóng riêng để tăng tốc xử lý. Và đến thời hiện nay thì GPU tận dụng thiết kế song song để tính toán được nhiều thứ hơn trong mỗi chu kỳ xử lý của chip.
![]()
Có nhiều khác biệt giữa GPU và CPU. Cái quan trọng nhất đó là CPU được thiết kế để thực thi các lệnh theo thứ tự, nó làm việc này rất nhanh và rất hiệu quả. Sau này có các tính năng như Hyper Threading (siêu phân luồng) để cải thiện khả năng tính toán song song nhưng về cơ bản thì nó cũng vẫn hoạt động theo nguyên tắc xử lý tuần tự các việc được đưa vào nhân CPU. Nếu bạn muốn tăng thêm hiệu năng, bạn phải tăng số nhân lên khá nhiều, ví dụ như con CPU AMD Epyc 64 nhân 128 luồng dùng cho server chẳng hạn.
Còn trong GPU, một nhân xử lý của nó nhỏ hơn và làm ít việc hơn, nhưng GPU lại có số nhân xử lý rất lớn. Cạc đồ họa GPU NVIDIA Pascal giá rẻ nhất cũng đã có tận 384 nhân xử lý rồi, trong khi con CPU x86 mạnh nhất chỉ được tới 64 nhân là hết mức.
Trước khi xem tiếp, mời anh em giải trí bằng video minh họa sự khác nhau giữa CPU và GPU khi vẽ hình ảnh
Lưu ý là anh em không thể so sánh hiệu năng của GPU chỉ dựa vào số nhân, vì nó còn phụ thuộc vào kiến trúc nhân và nhiều tinh chỉnh khác mà nhà sản xuất áp dụng cho thiết kế của họ. So sánh thì phải so số FLOPS (tính toán được bao nhiêu số thực với thuật toán floating point trong mỗi giây) thì sẽ hợp lý hơn.
Và nếu như CPU được thiết kế để chạy lệnh theo thứ tự thì GPU được thiết kế để chạy các lệnh song song. Cả NVIDIA và AMD chia GPU của họ thành nhiều khối, trong đó NVIDIA gọi mỗi khối là SM (Streaming Multiprocessor), còn AMD thì gọi là Compute Unit. Hình bên dưới là 1 SM của chip đồ họa NVIDIA kiến trúc Pascal.
![]()
Mỗi khối này bao gồm:
- 1 số nhân tính toán
- 1 bộ định thời gian
- 1 register file (chứa tất cả mọi general purpose register của một bộ xử lý, xem thêm về register ở đây)
- Bộ nhớ cache để thực thi lệnh (instruction cache)
- Bộ nhớ cache L1 và cache cho texture
- Đơn vị texture mapping
Tất nhiên là cạc đồ họa còn nhiều thứ khác nữa, ví dụ như cổng giao tiếp, bộ điều khiển các cổng này, bộ giải mã video, bộ render hình ảnh… Những thứ nằm thường nằm bên ngoài SM, CU nhưng vẫn thuộc "GPU".
Theo lý thuyết thì càng nhiều số SM, CU trong một GPU thì nó càng có thể tính toán được nhiều thứ hơn trong một cycle. Và tất nhiên là chi phí để sản xuất cũng tăng lên, giá đắt hơn.
Đây cũng là GPU Pascal của NVIDIA nhưng nhìn xa hơn, thì bạn sẽ thấy là có rất nhiều SM được lắp vào, chia thành nhiều khối to hơn.
![]()
Texture mapping và render output
Đây cũng là 2 thành phần quan trọng khác trong 1 GPU.
Số đơn vị dùng để xử lý texture mapping sẽ quyết định xem nó có thể xuất ra được tối đa bao nhiêu texel, và nó có thể map texture nhanh tới mức nào khi phần mềm cần "sơn" hay "mặc áo" cho các vật thể 3D. Thỉnh thoảng bạn sẽ thấy đâu đó rằng 1 con GPU có 160 texture mapping unit, nó chính là con số mà chúng ta đang nói tới ở đây.
![]()
Texel, hay còn gọi là texture pixel, là đơn vị nhỏ nhất để biểu diễn một texture map. Giống như 1 tấm ảnh của bạn thực chất được ghép lại từ nhiều pixel, thì một texture map cũng được ghép lại từ nhiều texel. Mỗi texel sẽ có màu sắc, ánh sáng khác nhau, khi ghép lại nó hình thành ra các đối tượng 3D cho bạn xem đấy.
Các tựa game 3D đầu tiên dùng rất ít tính năng texture, vì chỉ riêng việc dựng nên hình khối 3D thôi đã đủ phức tạp rồi. Hiện nay thì gần như game hiện đại nào cũng dùng texture.
Render output (ROP), đôi khi được gọi là raster operations pipeline, là nơi mà hình ảnh sau khi render xong sẽ được tổng hợp thành 1 tấm ảnh hoàn chỉnh trước khi hiện lên màn hình cho bạn xem. Số ROP càng lớn có nghĩa là càng có nhiều pixel có thể được kết xuất ra ngoài cùng lúc. ROP cũng là nơi xử lý khử răng cửa cho hình ảnh.
Băng thông bộ nhớ
Thành phần cuối cùng mà chúng ta nói tới là băng thông của bộ nhớ, và dung lượng bộ nhớ.
Băng thông bộ nhớ sẽ cho bạn biết lượng dữ liệu có thể được di chuyển vào vRAM riêng của GPU trong mỗi giây trước khi đưa vào cho các nhân xử lý. Các hiệu ứng phức tạp hơn, độ phân giải hình ảnh cao hơn thì dữ liệu xử lý ra càng lớn và băng thông sẽ phải lớn hơn. Nếu không có băng thông đủ lớn, số hình ảnh render được trong mỗi giây sẽ ít đi, tức là số khung hình trong mỗi giây (FPS) sẽ bị rớt xuống và khiến cho hình ảnh không còn mượt (nhất là khi chơi game). Nếu không cẩn thận thì băng thông có thể là nút nghẽn cổ chai của GPU khiến hiệu năng của nó chậm đi.
![]()
Ở giữa là GPU của card đồ họa, xung quanh nó là các chip VRAM dùng chuẩn GDDR5X
Dung lượng bộ nhớ thì đương nhiên quan trọng, vì nếu VRAM không đủ lớn để chứa dữ liệu trước khi đưa vào xử lý, hoặc sau khi xử lý xong, thì GPU khi đó phải đi qua dùng ké RAM của máy tính (tức là RAM của CPU) để chứa dữ liệu về texture, hình ảnh. Độ trễ lúc đấy sẽ tăng lên, game không còn chạy mượt nữa.
Tuy nhiên, anh em để ý là không phải cạc nào có VRAM riêng càng nhiều thì sẽ càng tốt, vì nó còn phụ thuộc vào năng lực xử lý thật sự của GPU ra sao nữa. Ví dụ, nếu VRAM quá dư thừa mà nhân GPU không xử lý đủ nhanh thì VRAM đó cũng không được tận dụng triệt để đâu. Có nhiều dòng cạc còn có mức VRAM khác nhau, số tiền cũng khác nhau, và bạn sẽ cần nghiên cứu một chút trước khi quyết định xem có nên chi thêm tiền để lấy dung lượng cao hơn hay không.
Tham khảo ExtremeTech
---
Khóa học Hacker và Marketing từ A-Z trên ZALO!
Khóa học Hacker và Marketing từ A-Z trên Facebook!
Bảo mật và tấn công Website - Hacker mũ trắng
KHÓA HỌC LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆP
Khóa học Lập trình Visual Foxpro 9 - Dành cho nhà quản lý và kế toán
Khóa học hướng dẫn về Moodle chuyên nghiệp và hay Xây dựng hệ thống đào tạo trực tuyến chuyên nghiệp tốt nhất hiện nay.
Khóa học AutoIt dành cho dân IT và Marketing chuyên nghiệp
Khoá học Word từ cơ bản tới nâng cao, học nhanh, hiểu sâu
Khóa học hướng dẫn sử dụng Powerpoint từ đơn giản đến phức tạp HIỆU QUẢ Khóa học Thiết kế, quản lý dữ liệu dự án chuyên nghiệp cho doanh nghiệp bằng Bizagi Khóa học Phân tích dữ liệu sử dụng Power Query trong Excel
Khóa học "Thiết kế bài giảng điện tử", Video, hoạt hình kiếm tiền Youtube bằng phần mềm Camtasia Studio Khóa học HƯỚNG DẪN THIẾT KẾ VIDEO CLIP CHO DÂN MARKETING CHUYÊN NGHIỆP HƯỚNG DẪN THIẾT KẾ QUẢNG CÁO VÀ ĐỒ HỌA CHUYÊN NGHIỆP VỚI CANVA Hãy tham gia khóa học để trở thành người chuyên nghiệp. Tuyệt HAY!😲👍
GOOGLE SPREADSHEETS phê không tưởng Hãy tham gia khóa học để biết mọi thứ Khóa học sử dụng Adobe Presenter-Tạo bài giảng điện tử
Để thành thạo Wordpress bạn hãy tham gia khóa học Khóa học sử dụng Edmodo để dạy và học hiện đại để thành công
Cập nhật công nghệ từ Youtube tại link: congnghe.hocviendaotao.com
Tham gia nhóm Facebook
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com
Bảo mật và tấn công Website - Hacker mũ trắng
KHÓA HỌC LẬP TRÌNH PYTHON TỪ CƠ BẢN ĐẾN CHUYÊN NGHIỆP

Khóa học AutoIt dành cho dân IT và Marketing chuyên nghiệp
Khoá học Word từ cơ bản tới nâng cao, học nhanh, hiểu sâu
Khóa học hướng dẫn sử dụng Powerpoint từ đơn giản đến phức tạp HIỆU QUẢ
Khóa học Thiết kế, quản lý dữ liệu dự án chuyên nghiệp cho doanh nghiệp bằng Bizagi
Khóa học Phân tích dữ liệu sử dụng Power Query trong Excel
kiếm tiền Youtube bằng phần mềm Camtasia Studio
Khóa học HƯỚNG DẪN THIẾT KẾ VIDEO CLIP CHO DÂN MARKETING CHUYÊN NGHIỆP
HƯỚNG DẪN THIẾT KẾ QUẢNG CÁO VÀ ĐỒ HỌA CHUYÊN NGHIỆP VỚI CANVA
Hãy tham gia khóa học để trở thành người chuyên nghiệp. Tuyệt HAY!😲👍
GOOGLE SPREADSHEETS phê không tưởng
Hãy tham gia khóa học để biết mọi thứ
Khóa học sử dụng Adobe Presenter-Tạo bài giảng điện tử
Để thành thạo Wordpress bạn hãy tham gia khóa học
Khóa học sử dụng Edmodo để dạy và học hiện đại để thành công
Cập nhật công nghệ từ Youtube tại link: congnghe.hocviendaotao.com
Tham gia nhóm Facebook
Để tham gia khóa học công nghệ truy cập link: http://thuvien.hocviendaotao.com
Mọi hỗ trợ về công nghệ email: dinhanhtuan68@gmail.com