2016-07-29 123 views
0

我在西班牙語版閱讀「計算機組織和設計硬件/軟件界面」,我遇到了一個我無法解決的練習。這個練習關於內存層次結構,特別是緩存。CPU緩存命中時間

演習說:

如果2.5納秒需要訪問N路關聯高速緩存標籤,4納秒的訪問數據,1納秒的命中/失敗比較和1納秒返回數據如果成功,則由處理器選擇。

  1. 高速緩存命中的關鍵路徑是由確定是否有成功或時間數據訪問的時間給出的?

  2. 什麼是緩存命中延遲? (成功案例)。

  3. 如果對標籤和數據矩陣的訪問時間都是3 ns,那麼高速緩存成功的延遲是多少?

我會盡量回答所有我知道的記憶問題。

要訪問保存在緩存中的數據,我必須做的第一件事是找到使用某個地址的索引字段的行。一旦內存系統找到了該行,我需要將我的地址的標籤字段與緩存的標籤字段進行比較。如果它們匹配,那麼它是一個命中,我必須返回數據,並且將由地址的偏移字段確定的行中的一定數量的數據取代,然後將數據返回給處理器。

這意味着緩存需要8.5 ns。但是我一直在用另一種方式來思考,chaches可以做到這一點:如果我得到所需的線(2.5 ns),那麼現在我可以訪問de數據,並且可以同時評估iquality的條件。所以,時間將會是4.5納秒。所以,其中之一是第二個問題的結果。哪些結果是正確的?

對於第一個問題,關鍵路徑將是需要更多時間的操作;如果緩存需要4.5來獲取數據,那麼關鍵路徑將訪問緩存中的標籤 - 比較 - 返回數據。否則,這將是整個過程。

對於最後一個問題,如果關鍵路徑是整個過程,則需要8ns。否則,它需要5ns(標籤訪問緩存,比較,返回數據)。

這是真的嗎?和一個完全相關的緩存?和一個直接映射緩存?

問題是我不知道緩存先做什麼以及下一步或並行執行什麼操作。

回答

1

如果文本沒有提及它是單處理器系統/多處理器系統中的緩存還是緩存並行執行的內容,則可以安全地假定它在執行緩存命中時執行整個過程。本能地說,我認爲訪問數據並比較並行比較命中是沒有意義的,如果這是一個錯誤呢?那麼數據訪問是不必要的,你會增加緩存未命中的延遲。

,那麼你在緩存命中的情況下,應該按以下順序:

  1. 訪問標籤(爲2.5ns)
  2. 比較命中/缺失(納秒)
  3. 訪問數據(爲4ns)
  4. 返回數據到程序請求它(納秒)

總計: 2.5 + 1 + 4 + 1 = 8。爲5ns

有了這個序列,我們得到(因爲你現在已經)以下問題的答案:

  1. 答:緩存命中關鍵路徑來訪問數據,並將其返回4 + 1 = 5(NS),比較以確定閹羊緩存查找是成功的:2.5 + 1 = 3.5(NS)

  2. 答案: 8.5ns

  3. 答案: 3 + 1 + 3 + 1 =爲8ns

如果我得到所需的行(2.5納秒),那麼現在我可以訪問日數據,並且並行 ,我可以評估不平等狀況。所以,時間 將4.5納秒

我不明白你如何得到4.5ns?如果您假設數據訪問和命中/失敗比較並行執行,那麼在緩存命中的情況下,您會得到:2.5 + 4 + 1 = 7ns。如果發生緩存未命中,你將得到7ns,相比之下,如果你不知道是否是緩存未命中,那麼你得到2.5 + 1 = 3.5ns的延遲延遲,這使得它非常無效嘗試將數據訪問的命中/未命中比較並行化。

如果您認爲訪問標籤命中/未命中比較與數據訪問並行進行,則會得到:4 + 1 = 5ns(如果發生緩存命中)。

顯然,你不能在並行與獲取數據返回的數據,但如果你想像這將是可能的,您訪問的標籤做對比平行存取數據,那麼你會得到回報的數據:2.5 + 1 + 1 = 4.5ns。

一個完全相關的緩存?和一個直接映射緩存?

A N路關聯高速緩存(作爲問題指的是)全相聯高速緩存中。這意味着緩存塊可以放置在緩存中的任何位置。因此它非常靈活,但這也意味着當我們想要在高速緩存中查找內存地址時,我們需要將標記與高速緩存中的每個塊進行比較,以瞭解我們要查找的內存地址是否被緩存。因此我們得到較慢的查找時間。

在直接映射緩存中,每個緩存塊只能在緩存中的一個點上。該點通過查看內存地址並計算地址的索引部分來計算。因此,直接映射的緩存可以快速查找,但不夠靈活。根據高速緩存大小,高速緩存塊可以經常更換。

問題中的術語有點令人困惑,在標註cpu緩存時,「標籤」通常被稱爲「標籤」。

+1

優秀的答案!謝謝 –