[Discovery] Kiến trúc HSA (Heterogenous System Architecture) là gì và nó có lợi ích như thế nào cho CPU/GPU?


Kien_truc_HSA_AMD_APU.

Trong thời gian gần đây AMD khá chú trọng đến một công nghệ điện toán mới mà hãng gọi là Heterogenous System Architecture (HSA, tạm dịch: kiến trúc hệ thống hỗn tạp). Đây sẽ là kiến trúc được AMD áp dụng trên nhiều vi xử lý của hãng trong tương lai, bắt đầu với SoC hiệu năng cao Carizzo sắp bán ra vào năm sau. AMD hứa hẹn con chip này sẽ mang lại hiệu năng cao cũng như hiệu quả sử dụng năng lượng tốt nhờ tận dụng một cách đầy đủ GPU tích hợp. Nhưng không chỉ có một mình AMD, công nghệ HSA thực chất được phát triển bởi cả một hiệp hội do AMD và ARM dẫn đầu, bên cạnh đó là nhiều tên tuổi lớn như Samsung, LG, Sony, Qualcomm, ST Ericsson, MediaTek, Texas Instruments… Vậy HSA là gì và nó mang lại lợi ích gì cho người dùng? Mời các bạn cùng tìm hiểu thông qua bài viết này.

Những thách thức trong thế giới điện toán hiện nay

Lĩnh vực điện toán hiện đang đi vào một giai đoạn khó khăn, nơi mà bất kì công ty nào muốn đi đầu với một công nghệ mới đều phải cẩn thận xem xét đến nhiều sự hi sinh. Một trong số đó là vấn đề liên quan đến năng lượng tiêu thụ. Người tiêu dùng muốn thiết bị của họ có thời lượng pin dài hơn trong khi kích cỡ máy thì càng ngày càng nhỏ lại, smartphone, tablet và laptop cũng càng lúc càng mỏng và nhẹ hơn. Nhìn ở mức cao hơn một chút, các trung tâm dữ liệu cũng đòi hỏi việc tiêu thụ năng lượng phải hiệu quả hơn trong bối cảnh chi phí làm mát và chi phí cấp điện đang gia tăng.

Cùng lúc đó, người dùng cũng muốn có được những trải nghiệm tốt hơn và mới mẻ hơn. Chúng ta muốn truy cập thiết bị của mình thông qua những giao diện tự nhiên hơn như cử chỉ và giọng nói, chúng ta cũng muốn những thiết bị đó phải quản lý được lượng dữ liệu ngày càng lớn dần (chẳng hạn như những bức ảnh chụp khi đi du lịch, các bộ phim giải trí, và cả một thế giới nội dung phong phú khác đang nằm trên “mây”).

Và để mang lại được những trải nghiệm như vậy, vai trò của lập trình viên là một điều không thể bỏ qua. Mọi thứ phải thật dễ dàng để giúp lập trình viên khai thác được tính năng mới của các công nghệ hiện đại bằng cách sử dụng những mô hình lập trình quen thuộc và mạnh mẽ.

CPU_GPU_so_sanh.JPG

Cuối cùng, việc phần mềm có thể chạy được trên nhiều nền tảng càng ngày càng trở nên cần thiết hơn. Đã qua rồi cái thời thiết bị điện toán duy nhất mà mỗi cá nhân có thể sở hữu chỉ là chiếc máy tính. Giờ đây những thiết bị điện toán có mặt ở khắp mọi nơi, và mỗi người có thể có đến vài ba cái máy tính, điện thoại, máy tính. Bạn hãy thử tưởng tượng nếu một app quan trọng có mặt trên Android nhưng lại thiếu vắng trên iOS, Windows hay OS X thì sức cạnh tranh của nó sẽ như thế nào so với một app tương đương nhưng có đủ phiên bản cho các hệ điều hành phổ biến?

Để giải quyết những thách thức phức tạp nêu trên, cả ngành công nghiệp cần một cách tiếp cận khác – một cách tiện cận hiệu quả hơn đối với kiến trúc điện toán. Chúng ta cần một phương thức có thể mang lại sự cải thiện trên cả 4 mặt: năng lượng, hiệu năng, khả năng lập trình và tính di động.

Kiến trúc HSA

Kể từ những ngày đầu ra đời, những chiếc máy tính đã sở hữu một bộ vi xử lý trung tâm (CPU) được thiết kế để chạy tốt những tác vụ chung chung. Tuy nhiên, trong vài thập kỉ gần đây các thiết bị điện toán cá nhân, kể cả tablet hay smartphone, lại được tích hợp thêm các loại bộ xử lý khác, và bộ xử lý đồ họa (GPU) là một trong số đó. GPU được tạo ra để đảm đương những tác vụ tính toán song song với CPU. Theo thời gian, GPU càng ngày càng trở nên mạnh mẽ hơn và phổ biến hơn, từ đó cho phép người ta sử dụng GPU như một giải pháp tính toán tăng cường cho CPU chứ không chỉ để xử lý đồ họa.

Vấn đề đó là CPU và GPU hiện nay được thiết kế như các thành phần độc lập và chúng không phối hợp hoạt động với nhau thật hiệu quả, thậm chí còn quá rắc rối đối với một số loại ứng dụng nhất định. CPU và GPU đều có bộ nhớ riêng của mình (CPU là RAM, GPU và vRAM), các hệ thống điện toán cũng cần có một ứng dụng để sao chép dữ liệu từ CPU sang cho GPU xử lý rồi lại chép ngược về CPU.

Chưa hết, bộ định thời của CPU và GPU hoàn toàn khác nhau khiến việc sắp xếp, quyết định thời gian chạy các chương trình cũng khác nhau. Điều đó tạo ra độ trễ và lượng dữ liệu dư thừa rất lớn, thế nên việc phối hợp giữa CPU và GPU chỉ đáng khi chạy những phần mềm nào cần đến một sức mạnh tính toán song song lớn.

Để khai thác tốt khả năng của các đơn vị tính toán song song trên GPU (parallel execution unit), điều cơ bản đó là các nhà thiết kế hệ thống phải suy nghĩ theo hướng khác. Họ phải tái cấu trúc lại hệ thống máy tính sao cho có thể tích hợp chặt chẽ nhiều thành phần tính toán khác nhau vào một nền tảng chung, trong khi vẫn phải mở ra một con đường dễ dàng và không cần nhiều thay đổi căn bản nhằm giúp lập trình viên tiếp cận nhanh hơn. Đây chính là mục tiêu chính của công nghệ HSA.

HSAAcceleratedProcessingUnit.

HSA tạo ra một một thiết kế vi xử lý tân tiến hơn với khả năng phối hợp cực tốt giữa các đơn vị tính toán trong hệ thống. Với HSA, các ứng dụng có thể khai thác một không gian địa chỉ chung (virtual address space), đồng thời được phép tạo ra những lệnh làm việc trên các phần cứng phù hợp nhất cho từng tác vụ khác nhau. Việc chia sẻ dữ liệu giữa các đơn vị tính toán, cụ thể hơn là giữa CPU và GPU, được đơn giản hóa đi rất nhiều. Chính khía cạnh này của HSA sẽ giúp lập trình viên viết phần mềm dễ hơn và nhanh hơn.

CPU và GPU cũng có thể thao tác trên cùng một vùng nhớ chung mà không làm cho dữ liệu mất đi tính thống nhất (coherence), cũng giống như những gì mà CPU đa nhân hiện nay có thể làm được. Bạn hãy tưởng tượng trong một chiếc máy tính mà cùng một dữ liệu đó nhưng CPU nhìn ra theo cách khác, còn GPU lại theo một cách khác thì sẽ như thế nào?

APU thế hệ mới của AMD và kiến trúc HSA 1.0

Kiểu kết hợp CPU và GPU vào chung trong một đế như cách mà AMD đang thực hiện trong SoC Carrizo không phải là mới. Hãng đã ra mắt những sản phẩm như thế nhiều năm nay và gọi chúng là APU (Accelerated Processing Unit). Giờ đây, với kiến trúc HSA phiên bản 1.0, AMD càng hoàn thiện hơn những con APU của mình về mặt hiệu năng, giảm độ trễ, tối ưu mức sử dụng năng lượng, đồng thời giúp lập trình viên dễ dàng hơn trong việc viết phần mềm. AMD muốn GPU phải hoạt động như là CPU, như vậy thì cách đối xử của phần mềm với các nhân xử lý nói chung sẽ thống nhất hơn.

Bên cạnh đó, HSA còn giúp tổ chức bộ nhớ tốt hơn vì giờ đây các ô nhớ của GPU hay CPU đều sử dụng chung một không gian địa chỉ ảo, nhờ vậy lập trình viên sẽ không gặp nhiều khó khăn trong việc di chuyển dữ liệu giữa các loại bộ nhớ khác nhau. Việc trao đổi dữ liệu giữa CPU và GPU sẽ nhanh hơn, ít lỗi, ít thành phần dư thừa hơn, và đây chính là một điểm khác biệt lớn so với của APU trước đây của chính AMD.
So_do_chung.
Nhìn tổng quan, chúng ta sẽ có những chiếc máy tính mạnh mẽ hơn (cả về mặt xử lý và đồ họa) và độ phản hồi tốt hơn, từ đó giúp giải quyết công việc nhanh hơn, chính xác hơn với chi phí thấp hơn. Hiệu quả sử dụng năng lượng của chip cũng được tăng cao nhờ các giải pháp do AMD phát triển. Nói cách khác, SoC Carrizo đã giúp giải quyết thách thức về thời lượng pin như đã nói ở trên.

Nhóm nhân sự chuyên về HSA của AMD đã phân tích sức mạnh của kiến trúc mới này bằng cách cho chạy Haar Face Detect, một thuật toán dùng để nhận biết gương mặt trong video. Nhóm đã so sánh việc sử dụng CPU/GPU kết hợp với tập lệnh OpenCL để xử lý hình ảnh rồi đối chiếu với những gì HSA có thể làm được. Kết quả đó là HSA chia sẻ dữ liệu rất tốt giữa CPU và GPU, dữ liệu không cần phải được copy và dọn dẹp giữa hai đơn vị tính toán (vì xài chung một bộ nhớ) nên các tác vụ được thực hiện với lượng dữ liệu thừa nhỏ nhất.

Hiệu năng của phiên bản HSA cũng cao hơn 2,3 lần trong khi mức tiêu thụ điện thì giảm 2,4 lần. Điều này không thể đạt được nếu chỉ dùng các CPU đa nhân, chỉ dùng GPU hay thậm chí kết hợp CPU và GPU theo mô hình hiện nay. Quan trọng hơn, phép thử nghiệm chỉ xài những phần mở rộng đơn giản cho ngôn ngữ C++ chứ không phải là một cách thức lập trình gì đó mới hoàn toàn nên việc tiếp cận không có gì là khó khăn. Đây chính là một ví dụ về cách mà HSA có thể mang lại một trải nghiệm tốt hơn cho người dùng.

Cấu hình hệ thống dùng thử nghiệm:

  • 4GB RAM; Windows 7 (64-bit); OpenCL 1.1
  • APU: AMD A10 4600M với GPU Radeon HD
  • CPU: 4 cores @ 2.3 MHz (turbo lên cao nhất là 3.2 GHz)
  • GPU: AMD Radeon HD 7660G, 6 đơn vị tính toán, xung nhịp 685MHz

AMD và lợi thế khi triển khai kiến trúc HSA

AMD có một vị trí rất độc đáo để đưa HSA vào thực tế bởi hãng có thể làm sản xuất CPU và GPU, còn NVIDIA thì không thể làm được chuyện đó. Kiến trúc GPU Maxwell mới của NVIDIA có hỗ trợ nhiều tính năng có thể dùng cho việc tính toán phức tạp (heterogeneous), nhưng bởi vì công ty không có CPU x86 của riêng mình nên hiệu quả mang lại không thể bằng như AMD. NVIDIA chỉ có thể khai thác heterogeneous trong mảng chip di động với những CPU ARM của họ, và hãng dự tính sẽ công bố tính năng đó trong người kế nhiệm của Tegra K1.

HSA_tom_luoc.

Intel cũng có thể đi theo con đường tương tự như AMD bởi giờ đây họ đã có thể làm cả CPU và GPU. Tuy nhiên, họ lại chọn một hướng khác: AMD làm APU để kết hợp CPU và GPU, còn Intel thì sản xuất CPU giá rẻ có khả năng hoạt động như là GPU. Co-processor Intel Xeon Phi đang bán trên thị trường hoạt động theo cùng cách này, nhưng nó chỉ có mặt trong server và siêu máy tính chứ không phải là những thiết bị tiêu dùng.

Hiệp hội HSA

Nếu chỉ một mình AMD thôi thì việc triển khai kiến trúc HSA sẽ rất khó. Mục tiêu của HSA còn là để giúp các nhà phát triển phần mềm chỉ cần viết app một lần và chạy trên nhiều nền tảng khác nhau, thế nên chỉ một công ty phần cứng đơn độc sẽ không thể biến giấc mơ này thật sự thật. Từ đây, Hiệp hội HSA (HSA Foundation) đã được thành lập như một cơ quan chịu trách nhiệm phát triển HSA và kiểm soát việc đưa kiến trúc này ra thị trường. Những thành viên tham gia sáng lập bao gồm AMD, ARM, Imagination Technologies, MediaTek, Texas Instruments, Samsung Electronics và Qualcomm, ngoài ra còn nhiều tên tuổi khác. Tất cả đều là những công ty lớn trong lĩnh vực chip nói riêng và điện toán nói chung nên thách thức về việc chạy ứng dụng đa nền tảng đã được giải quyết phần nào.

HSA.

Hiệp hội này cũng sẽ giúp các nhà thiết kế hệ thống tích hợp nhiều thành phần tính toán với nhau (chứ không chỉ riêng gì CPU và GPU) theo cách có thể loại bỏ được sự thiếu hiệu quả trong việc chia sẻ dữ liệu và công việc giữa các thành phần này. Thiết kế HSA cũng cho phép phần mềm khai thác được nhiều tính năng phần cứng thông qua một lớp chung gọi là HSA Intermediate Language (HSAIL). HSAIL sẽ biến giấc mơ “viết một lần, chạy khắp nơi” thành hiện thực bởi lập trình viên không phải tinh chỉnh mã nguồn của họ cho từng cấu hình CPU/GPU nữa.

Kết

Tất cả những gì mình muốn chia sẻ trong bài viết này đó là HSA sẽ là kiến trúc mới cho rất nhiều vi xử lý không chỉ do AMD sản xuất mà còn từ những thành viên khác trong Hiệp hội. Nó có thể mở ra một tương lai mới cho thiết bị điện toán, nơi mà chúng ta sẽ có những sản phẩm nhỏ hơn, nhẹ hơn, pin lâu hơn và mạnh mẽ hơn. Kéo theo đó là những trải nghiệm mới hơn, tốt hơn sẽ được mang đến cho người dùng. Lập trình viên thì có thể viết phần mềm của mình một cách đơn giản hơn và tận dụng CPU/GPU tốt hơn. Chúng ta hãy đợi đến khi con chip AMD Carrizo ra mắt vào năm sau để xem hiệu năng thực tế của nó sẽ như thế nào nhé.

Tóm tắt 6 lợi ích của HSA:

  1. Mang lại trải nghiệm người dùng tốt hơn
  2. Mang lại hiệu năng cao hơn trong cùng một kiểu dáng máy tính
  3. Thời gian dùng pin lâu hơn mà không phải hi sinh hiệu năng
  4. Việc lập trình phần mềm trở nên dễ dàng hơn
  5. Hỗ trợ cho các ngôn ngữ lập trình thông dụng như Python, C++ và Java
  6. Chi phí phát triển ứng dụng sẽ hạ thấp
Tham khảo: AMD (1), (2)
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s