Nvidia ra mắt cấu trúc GPU Fermi - Công nghệ GPGPU đã có chỗ đứng - phần 1

Từ lâu bộ xử lý đồ họa ( GPU ) đã trở thành trung tâm trong các cuộc bàn luận về tương lai của công nghệ máy tính. Trong đó GPU đầy hứa hẹn không chỉ đem lại hiệu ứng cao mà còn khắc phục được những vấn đề liên quan đến dữ liệu song song,
Từ lâu bộ xử lý đồ họa ( GPU ) đã trở thành trung tâm trong các cuộc bàn luận về tương lai của công nghệ máy tính. Trong đó GPU đầy hứa hẹn không chỉ đem lại hiệu ứng cao mà còn khắc phục được những vấn đề liên quan đến dữ liệu song song, bao gồm cả một số vấn đề phức tạp khác nữa. Do đó GPU và CPU luôn xung đột với nhau, dẫn đến sự cơ cấu lại thị trường bộ xử lý. AMD mua lại ATI. Intel tỏ ý lấn sân thị trường đồ họa với dự án Larrabee. Còn Nvida thì đầu tư nhiều thời gian công sức vào việc khai thác thị trường GPGPU non trẻ với hàng loạt ứng dụng, từ giáo dục tới chính phủ, doanh nghiệp và người dùng cá nhân. 

 

Hiện tại họ đã dành quá nhiều thời gian cho việc phát triển một môi trường GPU mang tên CUDA và các ứng dụng viết riêng cho nó, bao gồm PhysX API cho game, đến nỗi nhiều người cho rằng họ đã bỏ quên thị trường đồ họa. Tất nhiên không phải như vậy, nhưng công ty này rất nghiêm túc trong việc phát triển thị trường GPU của họ.  

Và quyết tâm này thấy rõ nhất khi họ chuẩn bị một con chip mới. Suốt vài năm nay Nvidia đã nghiên cứu cấu trúc GPU thế hệ tiếp theo, và họ quyết định tiết lộ thông tin về công nghệ này tại ngày khai mạc Hội thảo Công nghệ GPU tại San Francisco. Cấu trúc này có mật danh Fermi, không chỉ đem lại chất lượng đồ họa vượt trội mà còn có các tính năng GPU khác. Fermi có rất nhiều tính năng điện toán chưa từng gặp trong GPU, những tính năng này có thể tạo ra một loạt ứng dụng GPU mới, và Nvidia hy vọng điều này sẽ mở ra thị trường mới cho các sản phẩm GeForce và Tesla.

Khái quát

Chúng ta sẽ bắt đầu chuyến viếng thăm Fermi bằng việc nhìn lại biểu đồ khối logic của cấu trúc GPU. Hình ảnh dưới đây sẽ cho bạn biết rất nhiều điều, nếu như bạn biết cách diễn giải chúng. Đây là cách Nvidia thể hiện cấu trúc Fermi tập trung vào công nghệ tính toán GPU và bỏ qua nhiều tính năng đồ họa đặc biệt .

\"\" 

Biểu đồ chức năng của cấu trúc Fermi.
 

Hãy thử xem liệu chúng ta có thể giải mã được những thứ này không. Trên ảnh, các cấu trúc hình chữ nhật với hai đầu là xanh lam chính là SM ( Streaming Multiprocessors ) , theo thuật ngữ của Nvidia. Fermi có 16 SM   

Còn  các hình vuông nhỏ màu xanh lá cây trong mỗi SM là cái mà Nvidia gọi là “nhân CUDA.” Đây là nguồn thực thi cơ bản trong chip. Người ta thường gọi những nguồn này là “nhân,” nhưng cách gọi này có vẻ đã nói quá khả năng của chúng. Tuy nhiên, các nguồn thực thi này cũng giúp định đoạt tổng năng lượng của chip; GT200 có 240 “nhân,” Fermi có 512, hơn gấp đôi GT200. 

6 khối màu xanh lam sẫm ( DRAM I/F ) nằm hai bên biểu đồ là các giao diện bộ nhớ 64-bit, tức là Fermi có Bus bộ nhớ rộng 384-bit, thấp hơn so với 512-bit của GT200, nhưng Fermi đã bù đắp lại điều này bằng cách tăng gần gấp đôi lượng băng thông mỗi chân thông qua bộ nhớ GDDR5.

Dự đoán về Fermi

Trên đây là sơ đồ cơ bản của cấu trúc, và hẳn bạn đang tự hỏi Fermi ra sao so với đối thủ trực diện của mình trên cả thị trường đồ họa lẫn thị trường GPGPU –  GPU của AMD có mật danh Cypress sử dụng trong những Card màn hình Radeon HD 5870.

Và dưới đây là dự đoán : bảng dưới cho biết sức mạnh tính toán và băng thông bộ nhớ tối đa theo lý thuyết của loại card đồ họa nhanh nhất dựa trên GPU của AMD và Nvidia. Chúng ta tập trung vào card đồ họa thay vì các sản phẩm GPGPU bởi hiện AMD vẫn chưa công bố card FireStream dựa trên nền tảng Cypress, nhưng các sản phẩm này không được quá khác nhau so với card đồ họa cao cấp về các danh mục sau.  

 

Peak single-precision
arithmetic (GFLOPS)

Peak
double-
precision
arithmetic
(GFLOPS)

Băng thông bộ nhớ tối đa
(GB/giây)

Single-issue

Dual-issue

GeForce GTX 280

622

933

78

141.7

Radeon HD 4870

1200

-

240

115.2

Radeon HD 5870

2720

-

544

153.6

Các con số trên đã cho bạn cái nhìn khái quát. Hãy giả sử 1500MHz là tốc độ xung nhịp hợp lý cho nhân xử lý của Fermi. Con số này gần sát với GTX 285. Nếu giả sử Fermi đạt đến tốc độ này, thì tốc độ tính toán cho thuật toán Single-Precision có thể lên tới 1536 GFLOPS, bằng một nửa so với mức tối đa của Radeon HD 5870. Đây là một khoảng cách lớn, nhưng không khác lắm so với khoảng cách giữa GeForce GTX 280 và Radeon HD 4870 – tuy nhiên GTX280 chạy nhanh hơn xét về ứng dụng đồ họa và có tốc độ khá cạnh tranh trong kiểm định Shader. 

\"\"Phép toán dấu phẩy nổi chính xác gấp đôi ( Double-Precision – DP )  rất quan trọng với GPU, và Fermi đã nắm trong tay lợi thế này: thông lượng DP tối đa gần chạm 768 GFLOPS, nếu ước tính tốc độ xung nhịp theo dự đoán là chính xác, tức cao hơn 50% so với Radeon HD 5870, và gần gấp 10 lần GT200 ( sử dụng trong GeForce GTX 280 ) . 

Nhưng như vậy chưa phải là tất cả. Giả sử Nvidia cũng có tốc độ truyền dữ liệu 4.8 Gbps cho bộ nhớ GDDR5 mà AMD đã dùng Cypress, băng thông bộ nhớ tối đa của Fermi sẽ là 230 GB/s, lại một lần nữa cao hơn 50% so với Radeon HD 5870, vốn có độ rộng bus bộ nhớ tổng cộng là 256 bit.

Tất nhiên đây chỉ là dự đoán. Và sự thay đổi trong tốc độ xung nhịp có thể dẫn đến những thay đổi lớn trong chip. Không chỉ có vậy, gigaFLOPS tối đa về lý thuyết cũng ngày càng trở nên kém hữu dụng trong việc dự đoán tốc độ vì nhiều lý do. Thực ra, cấu trúc Fermi nhằm vào việc tính toán chính xác hơn và hiệu quả hơn chứ không chỉ đưa ra để so sánh với tốc độ lí thuyết FLOPS . 

Ngoài ra người dùng cũng muốn biết kích thước của chip Fermi  bởi yếu tố này góp phần vào giá bán của nó. NVIDIA không muốn nói về kích cỡ, mà cho biết Fermi gồm 3 tỉ transistor. Trong khi đó AMD ước tính Cypress có khoảng 2.15 tỉ transistor với diện tích khuôn là 334 mm². Nếu Fermi được sản xuất bằng công nghệ 40nm như Cypress, và có mật độ transistor tương đương, thì có thể chip Fermi sẽ có diện tích gần 467 mm².

\"\"Như vậy là khá lớn so với Cypress – gần gấp rưỡi – nhưng đi kèm với những lợi thế về tốc độ tính DP và băng thông bộ nhớ. Đây cũng là kích thước hợp lý khi mà Fermi có thêm 2 giao diện bộ nhớ. Nhưng điều ngạc nhiên là Fermi vẫn nhỏ hơn một chút so với GT200b 55-nm, bởi theo ước tính thì GT200b có diện tích gần 500 mm². Nvidia có vẻ đang tiếp tục xây dựng những loại chip cao cấp kích thước lớn, khác với xu hướng thu nhỏ của đối thủ, nhưng Fermi không quá lớn như GT200 65-nm nguyên bản.

Lại một lần nữa, đây chỉ là dự đoán và chúng ta sẽ sớm có được câu trả lời chính xác. Còn bây giờ hãy chuyển sang những gì thực sự đã biết về cấu trúc mới của Nvidia.  

Lập trình tốt hơn, chuyển đổi nhanh hơn 

Cũng như hầu hết các bộ xử lý PC thường gặp khác, cấu trúc của Fermi không phải hoàn toàn mới mà là cái tiến các cấu trúc GPU Nvidia trước đó, kết hợp với rất nhiều thay đổi nhờ vào việc cải thiện từng đơn vị chức năng trong chip. 

Nhiều thay đổi trong số này, đặc biệt là những thay đổi mà Nvidia đang quảng cáo, nhằm hướng tới việc nâng cao tính phù hợp và tốc độ của các ứng dụng phi đồ họa. Thực ra Nvidia đã đầu tư rất nhiều vào việc xây dựng một cơ sở vật chất phần mềm cho CUDA và lôi kéo khách hàng, và theo họ thì nhiều thay đổi trong cấu trúc mới được truyền cảm hứng từ kinh nghiệm này.

Chúng ta sẽ bắt đầu với một bộ phận quan trọng, bí ẩn và đôi khi vẫn bị bỏ qua trong GPU hiện đại: Primary Scheduler mà Nvidia gọi một cách khôn ngoan là "GigaThread scheduler.” Các luồng ( Thread ) dữ liệu  này bó lại thành các nhóm và được quản lý theo thứ bậc trong Fermi. Chúng có nhiệm vụ chuyển giao từng khối những luồng dữ liệu ( Thread ) tới cho những SP ( Stream Processor ) để bộ phận này tiếp tục quá trình phân loại một cách chi tiết hơn. Fermi có hai mặt cải tiến về khả năng phân loại ( Scheduling ) :   

\"\"
Thực hiện Kernel Nối tiếp và Song song    

Một trong số đó là khả năng chạy nhiều Kernel độc lập – hay các chương trình nhỏ trên các nhóm tuyến khác nhau cùng một lúc. Tuy đồ họa thường có xu hướng bao gồm nhiều nhóm lớn như pixel, nhưng các ứng dụng khác có thể không hoạt động trên quy mô lớn như vậy.

Thực ra Nvidia thừa nhận rằng một số Kernel có thể vận hành trên các lưới dữ liệu nhỏ hơn một GPU như Fermi, như trong hình. Một số công việc nhỏ hơn chiều rộng băng thông của GPU, vì thế một phần chip sẽ không phải hoạt động, trong khi phần còn lại sẽ xử lý từng Kernel. Fermi đã khắc phục được sự không hiệu quả này bằng cách thực thi tối đa tới 16 Kernal khác nhau cùng lúc, trong đó có nhiều Kernel trên cùng một SM ( Streaming Multiprocessors ) . Hạn chế ở đây là các Kernel khác nhau đều phải đến từ cùng một ngữ cảnh CUDA giống nhau – để GPU có thể xử lý nhiều PhysX cùng một lúc nếu cần, nhưng không trộn lẫn PhysX với OpenCL.

Để giải quyết vấn đề này, Fermi có khả năng chuyển đổi ngữ cảnh nhanh hơn nhiều, gấp 10 lần so với tốc độ trong GT200 (từ 10-20 micro giây). Ngoài ra, việc hòa lẫn những ứng dụng dựa trên tính toán GPU với việc xử lí đồ họa cũng tạo ra kết quả nhanh hơn.  

AMD cũng nói rằng chip Cypress của họ có thể chạy nhiều Kernel cùng lúc trên các SIMD khác nhau. Thực ra các Kernel khác nhau cũng có thể cùng chạy trên một SIMD.  

 \"\"