計算機組織與結構›Ch6 記憶體(Memory)
第 62 題/共 83 題
◀ CC 62/83
62. Cache Blocking、Spatial Locality、Temporal Locality
#CC-06-062中Cache BlockingSpatial LocalityTemporal Locality

迴旋神經網路(Convolution neural networks, CNNs)已經被廣泛應用在許多不同的應用領域。然而,由於 CNN 需要很高的運算量與龐大的記憶體足跡(memory footprint),客製化嵌入式處理器的設計以滿足目標應用所要求的時序限制(timing constraints),是一項重要的工作。在各種運算之中,矩陣運算(matrix operations)是 CNN 中很耗時的函式,也是硬體與軟體最佳化的重要目標,以加速 CNN 的運算。給定以下卷積運算(convolution operations)的部分 C 程式碼,其中有三個 N-by-N 矩陣(A、B、C),儲存的是雙精度浮點數(double-precision floating-point numbers,每個數字佔 8 bytes)。請回答以下與處理器設計及軟體最佳化相關的問題。

for (int x = 0; x < N; ++x)
  for (int y = 0; y < N; ++y)
    for (int z = 0; z < N; ++z)
      C[x+y*N] += A[x+z*N] * B[z+y*N];        (a)

(7) [5%] 通常,為了確保矩陣元素能夠享有空間局部性(spatial locality)與時間局部性(temporal locality)而放進快取中,常見的做法是把程式碼改寫成分塊(blocked)版本,讓運算在子矩陣(submatrices)內進行。請求出最大的矩陣大小 M,使得這三個子矩陣可以放進一個 16KB 的資料快取中。

(8) [10%] 承上題。請用計算出的 M,把上述程式碼改寫成分塊(blocked)版本。

📄 成大110
跳轉到第題
▤完整推導請見《WH 資工筆記 · 計算機組織與結構》Ch6 記憶體(Memory)
本章題號 · 61–80 / 83