cache與主存的地址映射

   前一篇寫了虛存與主存的地址轉換,所以現在就寫寫cache與主存的地址映像。我會用自己的理解和舉例的方法說的明瞭。

              首先,地址映像是把主存的地址空間用某種方法映像到cache,即就是把主存的程序按照一定的方法裝進cache中,並且會建立主存與cache的地址對應關係。

              通常有5種方法來映射,包括全相聯映射,直接映射,組相聯映射和位選擇組相聯映射及段相聯映射,先介紹常見的前三種。

             一.   全相聯映射和變換

                     全相聯,用一句話說明就是:主存的任意一塊可以映射到cache的任意一塊。當把主存的一塊裝入cache中時,會由相連存儲器記錄是哪一塊。cache的標記存的是主存的塊號。在映射的時候會記錄主存的塊號作爲標記。

                    主存的地址格式是:                                     cache的格式是:

                                                                      

                  M和C分別爲塊號,W爲塊內地址(字或字節)

                 假設主存容量是16KB,每塊16B,則M=10,W=4。 cache的容量是512B,每塊16B,則C=5,W=4。則映射的時候,cache前面會有對主存塊的標記(10位),若主存的塊號與cache的標記相等,則命中,最少比較一次,最多比較2的c次方。

            二.  直接映射

                  直接映射,就是主存的一塊只能映射到 cache的特定塊中,就是主存的0塊只能映射到cache的0塊。一般用公式:b=M mod C,是將內存的塊號對cache的塊號取餘。繼續用上面的數據。主存是2的10次方塊,也就是1024塊。cache是32塊,按照直接映射的方式:把內存分組,按cache有多少塊就把內存的每組分爲多少塊,將1024塊的每組分爲32塊,則需要分爲32組,32組需要用5位來標記。

                      這時,主存的地址格式就成了:  

                                                       

                                                             

      T是標記,c是塊號,b是塊內地址。T的5位就是用來標記組數的。

                       主存                                     cache

 

                       

    假如有一個地址是10011 01110 111的地址,如何看命中,最後四位是塊內地址,不用管,中間五位是塊號,是01110,是14,則在cache找塊號是14的,再比較第14塊的標記是不是和10011相等,相等則命中。cache的標記就是主存的組號。在直接映射中,只需要比較一次,但是可能會存在塊衝突的問題。

             三. 組相聯映射

                 組相聯映射就是將主存的每一組的某一塊映射到cache中的某一組的任意一塊。組相聯映射對cache和主存都進行分組,繼續沿用上面的數據,首先對cache進行分組,將cache分爲8組,每組4塊,那麼cache的地址格式就變爲:  

                  

      g位組號,r爲塊號,b爲塊內地址。

      cache有多少組,則主存的每組有多少塊。因此主存的地址格式:

             

                     

    M-g爲主存的組號,g爲主存的塊號,b爲塊內地址。因爲cache分爲8組,所以主存的每一組爲8塊,用3位來表示。所以組號就是7位,因爲主存一共14位。主存與cache建立映射的時候,會記錄下映射的主存的組號,即cache的標記就是主存的組號M-g。

                    

    上面表示的就是主存與cache的映射,主存的每一組的0塊只能映射到cache的第0組的任意一塊,在映射的過程中會需要7位來記錄主存的組號,由cache的標記記錄。當給定一個地址,來判斷是不是命中,比如給定1111110 111 1111這個地址,後四位是塊內地址,同樣不考慮,中間三位111,是7則在cache的第7組找,找第7組的每一塊的標記,和1111110比較,若相等,則表示命中。因此,最少需要比較一次,最多需要比較2的r次方。

          


0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章