Chương 5: Thiết kế hệ thống bộ nhớ GPU
Đơn vị xử lý đồ họa (GPU) đã phát triển thành những bộ gia tốc lập trình được nhiều luồng song song, có thể đạt hiệu suất và hiệu quả năng lượng cao trên nhiều ứng dụng khác nhau. Hệ thống bộ nhớ là một thành phần quan trọng trong kiến trúc GPU hiện đại, vì nó phải cung cấp cho rất nhiều luồng song song các truy cập dữ liệu nhanh chóng. Trong chương này, chúng ta sẽ khám phá các yếu tố chính trong thiết kế hệ thống bộ nhớ GPU, bao gồm các công nghệ DRAM được sử dụng trong GPU, bộ điều khiển bộ nhớ và phân phối, bộ nhớ chia sẻ và bộ nhớ cache, cũng như các kỹ thuật sử dụng bộ nhớ hiệu quả.
Công nghệ DRAM cho GPU
Bộ nhớ truy cập ngẫu nhiên động (DRAM) là công nghệ chính được sử dụng để triển khai bộ nhớ chính trong các hệ thống máy tính hiện đại, bao gồm cả GPU. DRAM cung cấp mật độ cao và chi phí tương đối thấp so với các công nghệ bộ nhớ khác. Tuy nhiên, DRAM cũng có độ trễ truy cập cao hơn và băng thông thấp hơn so với các bộ nhớ trên chip như bộ nhớ cache và file thanh ghi.
GPU thường sử dụng các công nghệ DRAM chuyên dụng được tối ưu hóa cho băng thông cao hơn là độ trễ thấp. Một số công nghệ DRAM thông dụng được sử dụng trong GPU bao gồm:
-
GDDR (Tốc độ dữ liệu kép đồ họa): GDDR là một công nghệ DRAM chuyên dụng được thiết kế cho các card đồ họa và máy chơi game. Nó cung cấp băng thông cao hơn so với DRAM DDR tiêu chuẩn bằng cách sử dụng bus rộng hơn và tốc độ xung nhịp cao hơn. GDDR5 và GDDR6 là các phiên bản mới nhất, cung cấp băng thông lên tới 512 GB/s và 768 GB/s, tương ứng.
-
HBM (Bộ nhớ băng thông cao): HBM là một công nghệ DRAM 3D đóng gói có hiệu suất cao, cung cấp băng thông rất cao và mức tiêu thụ điện năng thấp. HBM xếp chồng nhiều die DRAM lên nhau và kết nối chúng bằng các lỗ xuyên silicon (TSV), cho phép tốc độ truyền dữ liệu cao hơn nhiều so với DRAM truyền thống. HBM2 có thể cung cấp băng thông lên đến 1 TB/s.
Hình 5.1 minh họa sự khác biệt giữa bộ nhớ GDDR truyền thống và bộ nhớ HBM 3D đóng gói.
GDDR Memory
```Bộ nhớ HBM
____________ ______________________
| | | ___________________ |
| DRAM | | | | |
| Chips | | | DRAM Dies | |
| | | |___________________| |
| | | . |
| | | . |
| | | . |
|____________| | ___________________ |
| | | | |
PCB | | Logic Die (GPU) | |
| |___________________| |
|______________________|
Hình 5.1: So sánh kiến trúc bộ nhớ GDDR và HBM.
Lựa chọn công nghệ DRAM phụ thuộc vào các yêu cầu cụ thể của GPU, như ngân sách điện năng, kích thước, và ứng dụng mục tiêu. GPU cấp cao dành cho game và đồ họa chuyên nghiệp thường sử dụng GDDR6 vì băng thông cao, trong khi HBM2 phổ biến hơn trong các GPU dành cho trung tâm dữ liệu và HPC khi hiệu quả năng lượng là mối quan tâm chính.
## Bộ điều khiển bộ nhớ và điều phối
Bộ điều khiển bộ nhớ chịu trách nhiệm quản lý luồng dữ liệu giữa GPU và DRAM ngoài chip. Họ xử lý các yêu cầu bộ nhớ từ các lõi GPU, lập lịch các lệnh DRAM, và tối ưu hóa các mẫu truy cập bộ nhớ để tối đa hóa việc sử dụng băng thông và giảm thiểu độ trễ.
Bộ điều khiển bộ nhớ GPU thường sử dụng thiết kế đa kênh để cung cấp băng thông cao và truy cập song song vào DRAM. Mỗi kênh bộ nhớ được kết nối với một hoặc nhiều chip DRAM và có riêng bus lệnh và bus dữ liệu. Bộ điều khiển bộ nhớ phân phối các yêu cầu bộ nhớ trên các kênh có sẵn để tối đa hóa song song và tránh xung đột kênh.
Hình 5.2 hiển thị sơ đồ đơn giản của bộ điều khiển bộ nhớ GPU với bốn kênh.
Lõi GPU | | | | | Bộ điều k
| Controller |
|_____________|
| | | |
Ch0 Ch1 Ch2 Ch3
| | | |
DRAM DRAM DRAM DRAM
Hình 5.2: Bộ điều khiển bộ nhớ GPU với bốn kênh.
Phân phối bộ nhớ (Memory arbitration) là quá trình quyết định yêu cầu bộ nhớ nào nên được phục vụ trước khi có nhiều yêu cầu chưa được xử lý. GPU sử dụng các chính sách phân phối khác nhau để tối ưu hóa hiệu suất và công bằng của hệ thống bộ nhớ:
-
Đến trước, phục vụ trước (First-Come, First-Served - FCFS): Chính sách phân phối đơn giản nhất, trong đó các yêu cầu được phục vụ theo thứ tự chúng đến. FCFS là công bằng nhưng có thể dẫn đến hiệu suất không tối ưu do thiếu sắp xếp lại các yêu cầu.
-
Luân phiên (Round-Robin - RR): Các yêu cầu được phục vụ theo thứ tự vòng tròn, đảm bảo ưu tiên bình đẳng cho tất cả người yêu cầu. RR đảm bảo công bằng nhưng có thể không tối ưu hóa cho tính cục bộ hoặc tính cấp bách của các yêu cầu.
-
Dựa trên ưu tiên: Các yêu cầu được gán ưu tiên dựa trên các tiêu chí khác nhau, chẳng hạn như loại yêu cầu (ví dụ: đọc so với ghi), nguồn (ví dụ: bộ đệm texture so với bộ đệm L2) hoặc tuổi của yêu cầu. Các yêu cầu có ưu tiên cao hơn sẽ được phục vụ trước.
-
Dựa trên hạn chót: Các yêu cầu được lập lịch dựa trên hạn chót của chúng để đảm bảo hoàn thành kịp thời. Điều này đặc biệt quan trọng đối với các ứng dụng đồ họa thời gian thực.
-
Dựa trên tính cục bộ: Bộ điều khiển bộ nhớ cố gắng lập lịch các yêu cầu truy cập vào các vị trí bộ nhớ gần nhau cùng một lúc để tối đa hóa số lần trúng bộ đệm hàng và giảm thiểu chi phí kích hoạt và ngừng hoạt động DRAM.
Các bộ điều khiển bộ nhớ GPU nâng cao thường sử dụng một sự kết hợp của các chính sách phân phối này để đạt được sự cân bằng tốt nhất giữa hiệu suất, công bằng và các yêu cầu thời gian thực.
Bộ nhớ chia sẻ và bộ đệm
GPU sử dụng một hệ thống bộ nhớ phân cấp bao gồm cả bộ nhớ được quản lý bằng phần mềm và bộ nhớ đệm được quản lý bằng phần cứng để giảm độ trễ và nhu cầu băng thông của bộ nhớ chính.
Bộ nhớ chia sẻ
Bộ nhớ chia sẻ là một không gian bộ nhớ được quản lý bằng phần mềm, nằm trên chip, được chia sẻ giữa các luồng của một khối luồng (NVIDIA) hoặc nhóm (AMD).Đây là bản dịch sang tiếng Việt của tệp Markdown được cung cấp. Đối với mã, không dịch mã, chỉ dịch các bình luận.
kgroup (OpenCL) hoạt động như một bộ nhớ cache được kiểm soát bởi người dùng, cho phép các lập trình viên quản lý rõ ràng việc di chuyển và tái sử dụng dữ liệu trong một khối luồng.
Bộ nhớ chung thường được triển khai bằng cách sử dụng các ngân hàng SRAM đa cổng, có tốc độ cao, để cung cấp truy cập có độ trễ thấp và băng thông cao. Mỗi ngân hàng có thể phục vụ một yêu cầu bộ nhớ mỗi chu kỳ, vì vậy phần cứng phải điều phối giữa các truy cập đồng thời vào cùng một ngân hàng để tránh xung đột.
Hình 5.3 minh họa tổ chức của bộ nhớ chung trong một lõi GPU.
Khối Luồng
______________________
| _________________ |
| | Luồng 0 | |
| |_________________| |
| . |
| . |
| . |
| _________________ |
| | Luồng N-1 | |
| |_________________| |
|______________________|
|
________|________
| |
| Bộ Nhớ Chung |
| ____________ |
| | Ngân Hàng 0 | |
| |____________| |
| | Ngân Hàng 1 | |
| |____________| |
| . |
| . |
| . |
| | Ngân Hàng M-1 | |
| |____________| |
|_________________|
Hình 5.3: Tổ chức bộ nhớ chung trong một lõi GPU.
Việc sử dụng đúng cách bộ nhớ chung có thể cải thiện đáng kể hiệu suất của các kernel GPU bằng cách giảm số lượng truy cập vào DRAM chậm hơn. Tuy nhiên, nó yêu cầu một sự lập trình cẩn thận để đảm bảo chia sẻ dữ liệu hiệu quả và tránh xung đột ngân hàng.
Bộ Nhớ Cache Được Quản Lý Bởi Phần Cứng
Ngoài bộ nhớ chung được quản lý bằng phần mềm, các GPU cũng sử dụng bộ nhớ cache được quản lý bởi phần cứng để tự động khai thác tính cục bộ dữ liệu và giảm truy cập DRAM. Các loại bộ nhớ cache được quản lý bởi phần cứng phổ biến nhất trong GPU là:
-
Bộ Nhớ Cache L1: Một bộ nhớ cache nhỏ riêng cho mỗi lõi, lưu trữ dữ liệu bộ nhớ toàn cục được truy cập gần đây. Bộ nhớ cache L1 thường riêng tư với mỗi lõi GPU và được sử dụng để giảm độ trễ của các truy cập bộ nhớ toàn cục.
-
Bộ Nhớ Cache Texture: Một bộ nhớ cache được thiết kế tối ưu hóa cho việc truy cập vào dữ liệu chỉ đọc.Dữ liệu kết cấu dưới dạng ảnh được tối ưu hóa cho việc truy cập không gian 2D và hỗ trợ các phép lọc và nội suy được gia tốc phần cứng.
-
Bộ đệm Hằng số: Một bộ đệm nhỏ, chỉ đọc chứa dữ liệu hằng số thường được truy cập. Bộ đệm hằng số được phát sóng đến tất cả các luồng trong một warps, điều này làm cho nó hiệu quả với dữ liệu được chia sẻ giữa nhiều luồng.
-
Bộ đệm L2: Một bộ đệm lớn hơn, được chia sẻ nằm giữa các lõi GPU và bộ nhớ chính. Bộ đệm L2 lưu trữ dữ liệu bị loại khỏi các bộ đệm L1 và được sử dụng để giảm số lượng truy cập DRAM.
Hình 5.4 cho thấy một cấu trúc bộ nhớ GPU điển hình với các bộ đệm được quản lý bằng phần cứng.
GPU Core 0 GPU Core 1 GPU Core N-1
________________ ________________ ________________
| | | | | |
| L1 Data | | L1 Data | | L1 Data |
| Cache | | Cache | | Cache |
|________________| |________________| |________________|
| | | | | |
| Texture | | Texture | | Texture |
| Cache | | Cache | | Cache |
|________________| |________________| |________________|
| | | | | |
| Constant | | Constant | | Constant |
| Cache | | Cache | | Cache |
|________________| |________________| |________________|
| | |
|_____________________|_____________________|
|
_______|_______
| |
| L2 Cache |
|_______________|
|
|
Main Memory
Hình 5.4: Cấu trúc bộ nhớ GPU với các bộ đệm được quản lý bằng phần cứngBộ nhớ đệm được quản lý bằng phần cứng giúp cải thiện hiệu suất của các ứng dụng GPU bằng cách tự động khai thác tính cục bộ dữ liệu và giảm số lần truy cập DRAM. Tuy nhiên, chúng cũng có thể gây ra các thách thức về tính liên kết và nhất quán bộ nhớ, đặc biệt là trong bối cảnh của các mô hình lập trình song song như CUDA và OpenCL.
Các kỹ thuật để sử dụng bộ nhớ hiệu quả
Việc sử dụng hiệu quả hệ thống bộ nhớ của GPU là rất quan trọng để đạt được hiệu suất và hiệu quả năng lượng cao. Một số kỹ thuật chính để tối ưu hóa việc sử dụng bộ nhớ trong các ứng dụng GPU bao gồm:
-
Liên kết: Sắp xếp các truy cập bộ nhớ từ các luồng trong một warp tới các vị trí bộ nhớ liền kề, cho phép phần cứng kết hợp chúng thành một giao dịch bộ nhớ rộng hơn. Việc liên kết tối đa hóa việc sử dụng băng thông DRAM và giảm số lượng giao dịch bộ nhớ.
-
Tối ưu hóa bố cục dữ liệu: Tổ chức các cấu trúc dữ liệu trong bộ nhớ để tối đa hóa tính cục bộ không gian và giảm thiểu lỗi bộ nhớ đệm. Điều này bao gồm các kỹ thuật như bố cục cấu trúc-của-mảng (SoA), nhóm các phần tử dữ liệu cùng loại lại với nhau, và bố cục mảng-của-cấu trúc (AoS), giữ các phần tử dữ liệu thuộc cùng một cấu trúc gần nhau.
-
Bộ nhớ đệm và lấy dữ liệu trước: Sử dụng hiệu quả bộ nhớ đệm được quản lý bằng phần cứng bằng cách khai thác tính cục bộ thời gian và không gian trong các mẫu truy cập bộ nhớ. Điều này có thể đạt được thông qua các kỹ thuật như phân khối dữ liệu, chia dữ liệu thành các khối nhỏ hơn vừa để vừa vào bộ nhớ đệm, và lấy dữ liệu trước bằng phần mềm, tải dữ liệu vào bộ nhớ đệm trước khi cần sử dụng.
-
Lập lịch truy cập bộ nhớ: Sắp xếp lại các truy cập bộ nhớ để tối đa hóa số lần trúng bộ đệm hàng và giảm thiểu chi phí khởi động và kích hoạt DRAM. Điều này có thể được thực hiện thông qua các cơ chế phần cứng trong bộ điều khiển bộ nhớ hoặc thông qua các kỹ thuật phần mềm như tối ưu hóa mẫu truy cập và biến đổi bố cục dữ liệu.
-
Nén dữ liệu: Áp dụng các kỹ thuật nén dữ liệu để giảm kích thước dữ liệu được truyền giữa bộ nhớ và các lõi GPU. Điều này có thểĐây là bản dịch tiếng Việt của tệp Markdown:
Giúp giảm thiểu các điểm nghẽn băng thông và giảm tiêu thụ năng lượng liên quan đến chuyển động dữ liệu.
- Ảo hóa bộ nhớ: Sử dụng kỹ thuật bộ nhớ ảo để cung cấp một không gian địa chỉ liên tục, thống nhất cho các ứng dụng GPU. Điều này cho phép quản lý bộ nhớ linh hoạt hơn và cho phép các tính năng như phân trang theo yêu cầu, có thể giúp giảm lượng bộ nhớ cần và cải thiện sử dụng hệ thống.
Hình 5.5 minh họa một số kỹ thuật này trong bối cảnh của một hệ thống bộ nhớ GPU.
GPU Cores
|
______|______
| |
| Coalescing |
|_____________|
|
______|______
| |
| Data Layout |
| Optimization|
|_____________|
|
______|______
| |
| Caching and |
| Prefetching |
|_____________|
|
______|______
| |
| Memory |
| Access |
| Scheduling |
|_____________|
|
______|______
| |
| Compression |
|_____________|
|
______|______
| |
| Memory |
|Virtualization|
|_____________|
|
DRAM
Hình 5.5: Các kỹ thuật để sử dụng bộ nhớ hiệu quả trong hệ thống bộ nhớ GPU.
-
Coalescing: Sắp xếp các lần truy cập bộ nhớ từ các luồng trong một warp vào các vị trí bộ nhớ liền kề, giúp phần cứng kết hợp chúng thành một giao dịch bộ nhớ rộng hơn. Coalescing tối đa hóa việc sử dụng băng thông DRAM và giảm số lượng giao dịch bộ nhớ.
Ví dụ:
// Mẫu truy cập không coalesced int idx = threadIdx.x; float val = input[idx * stride]; // Mẫu truy cập coalesced int idx = threadIdx.x; float val = input[idx];
-
Tối ưu hóa bố trí dữ liệu: Tổ chức các cấu trúc dữ liệu trong bộ nhớ để tối đa hóa tính cục bộ không gian và giảm thiểu các lỗi cache. Điều này bao gồm các kỹ thuật như bố trí cấu trúc của mảng (SoA), nhóm các phần tử dữ liệu cùng loại lại với nhau, và bố trí mảng của cấu trúc (AoS).Đây là bản dịch tiếng Việt của tệp Markdown:
-
Sử dụng các cấu trúc dữ liệu phù hợp: Sử dụng các cấu trúc dữ liệu phù hợp có thể giúp cải thiện hiệu suất bộ nhớ. Ví dụ, sử dụng mảng của các cấu trúc (Array-of-Structures, AoS) thay vì cấu trúc của các mảng (Structure-of-Arrays, SoA) có thể giúp giữ các phần tử dữ liệu thuộc cùng một cấu trúc ở gần nhau.
Ví dụ:
// Bố cục Mảng-của-Cấu trúc (AoS) struct Point { float x; float y; float z; }; Point points[N]; // Bố cục Cấu trúc-của-Mảng (SoA) struct Points { float x[N]; float y[N]; float z[N]; }; Points points;
-
Bộ nhớ cache và Prefetching: Sử dụng hiệu quả bộ nhớ cache do phần cứng quản lý bằng cách khai thác tính cục bộ về thời gian và không gian trong các mẫu truy cập bộ nhớ. Điều này có thể đạt được thông qua các kỹ thuật như chia nhỏ dữ liệu (data tiling), tạo ra các mảnh dữ liệu nhỏ hơn vừa vặn với bộ nhớ cache, và prefetching phần mềm, tải dữ liệu vào bộ nhớ cache trước khi cần đến.
Ví dụ:
// Chia nhỏ dữ liệu for (int i = 0; i < N; i += TILE_SIZE) { for (int j = 0; j < N; j += TILE_SIZE) { // Xử lý một mảnh dữ liệu vừa vặn với bộ nhớ cache for (int ii = i; ii < i + TILE_SIZE; ii++) { for (int jj = j; jj < j + TILE_SIZE; jj++) { // Thực hiện tính toán trên A[ii][jj] } } } }
-
Lập lịch truy cập bộ nhớ: Sắp xếp lại các truy cập bộ nhớ để tối đa hóa số lần trúng hàng đệm và giảm thiểu chi phí kích hoạt và ngắt kết nối DRAM. Điều này có thể được thực hiện thông qua các cơ chế phần cứng trong bộ điều khiển bộ nhớ hoặc thông qua các kỹ thuật phần mềm như tối ưu hóa mẫu truy cập và biến đổi bố cục dữ liệu.
-
Nén dữ liệu: Áp dụng các kỹ thuật nén dữ liệu để giảm kích thước dữ liệu được truyền giữa bộ nhớ và các lõi GPU. Điều này có thể giúp giảm bớt các rào cản băng thông và giảm tiêu thụ năng lượng liên quan đến việc di chuyển dữ liệu.
Ví dụ:
- Mã hóa delta: Lưu trữ sự khác biệt giữa các giá trị liên tiếp thay vì các giá trị thực tế.
- Mã hóa chiều dài chuỗi (run-length encoding): Thay thế các giá trị lặp lại bằng một giá trị duy nhất và một bộ đếm.
- Mã hóa Huffman: Gán các chuỗi bit ngắn hơn cho các giá trị xuất hiện thường xuyên hơn.
-
Kiến trúc bộ nhớ:Vietnamese translation:
Ảo hóa: Sử dụng các kỹ thuật bộ nhớ ảo để cung cấp một không gian địa chỉ thống nhất và liên tục cho các ứng dụng GPU. Điều này cho phép quản lý bộ nhớ linh hoạt hơn và hỗ trợ các tính năng như phân trang yêu cầu, có thể giúp giảm lượng bộ nhớ sử dụng và cải thiện hiệu suất của hệ thống.
Ví dụ:
- Địa chỉ ảo thống nhất (UVA) trong CUDA: Cho phép các luồng GPU truy cập trực tiếp bộ nhớ CPU bằng cách sử dụng một con trỏ duy nhất, đơn giản hóa quản lý bộ nhớ trong các hệ thống dị chủng.
GPU Đa-Chip-Mô-đun
Khi hiệu suất và yêu cầu về điện năng của GPU tiếp tục tăng lên, các thiết kế chip đơn truyền thống có thể không đủ khả năng đáp ứng nhu cầu này. Các thiết kế Đa-Chip-Mô-đun (MCM), nơi nhiều chip GPU được tích hợp thành một gói duy nhất, đã xuất hiện như một giải pháp hứa hẹn cho vấn đề này.
Thiết kế GPU MCM mang lại nhiều lợi ích:
-
Băng thông bộ nhớ cao hơn: Bằng cách tích hợp nhiều đống hoặc chip bộ nhớ, các GPU MCM có thể cung cấp băng thông bộ nhớ đáng kể cao hơn so với thiết kế chip đơn.
-
Khả năng mở rộng tốt hơn: Các thiết kế MCM cho phép tích hợp nhiều đơn vị tính toán và bộ điều khiển bộ nhớ hơn, cho phép GPU mở rộng đến các mức hiệu suất cao hơn.
-
Hiệu suất sản xuất và hiệu quả về chi phí tốt hơn: Các chip riêng lẻ nhỏ hơn trong thiết kế MCM có thể có hiệu suất sản xuất tốt hơn và hiệu quả về chi phí hơn so với các chip lớn dạng đơn khối.
Tuy nhiên, các thiết kế GPU MCM cũng đưa ra những thách thức mới, chẳng hạn như:
-
Giao tiếp giữa các chip: Giao tiếp hiệu quả giữa các chip khác nhau trong một gói MCM là rất quan trọng đối với hiệu suất. Cần có các liên kết tốc độ cao, độ trễ thấp để giảm thiểu chi phí di chuyển dữ liệu giữa các chip.
-
Cung cấp điện và quản lý nhiệt độ: Các thiết kế MCM yêu cầu các chiến lược cung cấp điện và quản lý nhiệt độ cẩn thận để đảm bảo hiệu suất và độ tin cậy tối ưu.
-
Hỗ trợ phần mềm: GPU MCM có thể yêu cầu thay đổi mô hình lập trình và hệ thống thời gian chạy để khai thác tối đa lợi ích của kiến trúc đa-chip.
Nghiên cứu trongKhu vực này khám phá thiết kế và tối ưu hóa GPU MCM, bao gồm kiến trúc hệ thống bộ nhớ, thiết kế liên kết và quản lý tài nguyên.
Ví dụ, Arunkumar et al. [2017] đề xuất thiết kế GPU MCM sử dụng liên kết tốc độ cao, độ trễ thấp để kết nối nhiều chip GPU. Các tác giả cũng đề xuất một kiến trúc hệ thống bộ nhớ tận dụng băng thông và dung lượng tăng của thiết kế MCM để cải thiện hiệu suất và hiệu quả năng lượng.
Ví dụ khác là công trình của Milic et al. [2018], đề xuất một chế độ quản lý tài nguyên cho GPU MCM nhằm cải thiện việc sử dụng tài nguyên và giảm chi phí giao tiếp liên chip. Chế độ này sử dụng kết hợp các kỹ thuật phần cứng và phần mềm để theo dõi mức sử dụng tài nguyên và mẫu giao tiếp của ứng dụng, sau đó đưa ra các quyết định phân bổ tài nguyên động.
Kết luận
Hệ thống bộ nhớ là một thành phần quan trọng của các kiến trúc GPU hiện đại, và thiết kế và tối ưu hóa của nó có thể ảnh hưởng đáng kể đến hiệu suất và hiệu quả của toàn hệ thống. Khi nhu cầu của các tải công việc song song tiếp tục tăng lên, các nhà nghiên cứu đang khám phá một loạt các kỹ thuật để cải thiện hiệu suất, khả năng mở rộng và khả năng thích ứng của các hệ thống bộ nhớ GPU.
Một số hướng nghiên cứu chính trong lĩnh vực này bao gồm lập lịch truy cập bộ nhớ và thiết kế liên kết, hiệu quả bộ nhớ cache, ưu tiên yêu cầu bộ nhớ và bỏ qua bộ nhớ cache, khai thác sự không đồng nhất giữa các warp, bỏ qua bộ nhớ cache phối hợp, quản lý bộ nhớ cache thích ứng, ưu tiên bộ nhớ cache, phân bổ trang bộ nhớ ảo, phân bố dữ liệu và thiết kế mô-đun chip đa chip.
Bằng cách khám phá những kỹ thuật này và các kỹ thuật khác, các nhà nghiên cứu nhằm mục tiêu phát triển các hệ thống bộ nhớ GPU có thể theo kịp những yêu cầu ngày càng tăng của các tải công việc song song đồng thời duy trì hiệu suất và hiệu quả năng lượng cao. Khi GPU tiếp tục phát triển và tìm ra các ứng dụng mới trong các lĩnh vực như học máy, tính toán khoa học và phân tích dữ liệu, thiết kế và tối ưu hóa hệ thống bộ nhớ của chúng trở nên quan trọng hơn bao giờ hết.Các thân cây vẫn sẽ là một lĩnh vực nghiên cứu và đổi mới quan trọng.