Cache


Cache

  • RAMよりCPUに近く、高速です.スループット(レジストリ>キャッシュ>RAM>ハードディスク)
  • CPUが処理するデータを
  • RAMまたはハードディスクから取り出すには、その都度の遅延時間がかかる.
  • CPUは、RAMからデータを取り出す前にキャッシュを検証する.
  • Tmephalocality=>一度に使用したデータが再利用される可能性が高い.
  • Spatial Locality=>使用データの周辺データが使用される可能性が高い.
  • 空間位置例(Cache Friendly Code)
  • INT32 buffer[10000][10000];
    int main(int argc, char *argv[])
    {
    
        memset(buffer, 0, sizeof(buffer));
    	//열 단위로 접근
    	{
    		UINT64 start = GetTickCount();
    		INT64 sum = 0;
    		for(int i=0; i<10000; i++)
    			for (int j = 0; j < 10000; j++)
    			{
    				sum += buffer[i][j];
    			}
    		UINT64 end = GetTickCount();
    		cout << end - start << endl;
    	}
    
    	//행 단위로 접근
    	{
    		UINT64 start = GetTickCount();
    		INT64 sum = 0;
    		for (int i = 0; i<10000; i++)
    			for (int j = 0; j < 10000; j++)
    			{
    				sum += buffer[j][i];
    			}
    		UINT64 end = GetTickCount();
    		cout << end - start << endl;
    	}
    
    }