計算機存儲器系統

存儲器是操作系統管理的重要資源之一,存儲器中爲CPU存放指令和數據,存儲器是一個線性的字節數組,CPU能夠在一個常數時間內訪問每個存儲器位置。

存儲區是一個具有不同層次,成本,訪問時間的存儲設備的層次結構,CPU寄存器保存着最常用的數據,<靠近CPU內部的小的,速度較快的高速緩存存儲器,作爲一部分存儲相對較慢的主存儲器中的數據和指令的緩衝區>。以上說法可能有點抽象,這麼說吧,因爲現在CPU運算速率是相當快的,而直接從內存中訪問數據的速度卻是是相當慢的,靠近CPU的高速緩存,就是解決這一矛盾的,在CPU運算器期間,高速緩存提前獲取內存中的部分指令和數據,CPU運算完後,可以先從高速緩存中找數據,訪問高速緩存的速度相比於內存更快,要是在高速緩存中找不到數據,CPU就訪問內存,找需要的數據。這下應該理解那句話的意思了。除了高速緩存,接下來就是主存,再就是磁盤,現在還有一種相比於磁盤更快一點的存儲設備,是固態硬盤,訪問速度慢與主存。按照存儲器這樣的出現介紹順序,訪問速度越慢的存儲器,價格越低廉,容量越大。訪問速度越快的,價格約昂貴,容量越小。其中局部性好的存儲器,訪問速率越快。

  • 隨機訪問存儲器
    隨機訪問存儲器分爲靜態存儲器(SRAM)和動態存儲器(DRAM)。靜態相比於動態訪問速度更快。SRAM用來作爲高速緩存的存儲器。DRAM作爲主存的存儲器。

只要有供電,SRAM就會保持穩定,與DRAM不同,不需要刷新,SRAM的存取比DRAM快,SRAM對諸如光和噪音這兩樣的干擾不敏感,代價是SRAM單元比DRAM單元使用更多的晶體管,因而密集度低,而且更貴,功耗更大。

  • 內存模塊

每個DRAM被連接到某個被稱爲內存控制器的電路,這個電路可以一次傳送w位到每個DRAM芯片或者從DRAM芯片傳送w位。DRAM芯片被封裝到內存模塊。DRAM中含有多個超單元,每個超單元存儲主存的一個字節,而用相應超單元地址爲(i, j)的八個超單元來表示主存中字節地址A處的64位字,當要取出內存中地址A中的一個字,內存控制器將A轉換成超單元地址(i,j),並將發送到內存模塊,然後內存模塊再將i和j廣播到每個DRAM,作爲響應,每個DRAM輸出它的(i,j)超單元的八位內容,模塊中的電路收集這些輸出,並把他們合成64位子,返回給內存控制器。通過多個內存模塊連接到內存控制器,能匯聚合成內存,

  • 訪問主存

數據流通過稱爲總線的共享電子電路在處理器和DRAM主存之間來來回回,當有讀寫事件發生時,就會產生總線事務。讀事務,主存將數據傳給CPU,寫事務,CPU傳數據到主存。

總線是一行並行的導線,能攜帶地址,數據和控制信號。取決於總線的設計,數據和地址信號可以共享同一組導線,也可以使用不同的。

  • 磁盤存儲

磁盤是廣爲應用的保存大量數據的存儲設備,容量可以超級大,讀數據的速度相比於DRAM,慢10萬倍,相比於SRAM慢100萬倍。

磁盤構造:磁盤由盤片構成,每個盤片有兩面或者稱爲表面,表面覆蓋有磁性記錄材料,盤片中央有一個旋轉的主軸。磁盤通常由一個或者多個這樣的盤片組成。每個盤片有一組成爲磁道的同心圓組成,每個磁道被劃分成一組扇區。每個扇區包含一組數據位。扇區由一些格式化位分隔開。

CPU使用一種稱爲IO映射的技術來向IO設備發送命令,在使用內存映射IO的系統中,地址空間中有一快=塊地址是專門爲IO設備通信保留的,每個這樣的地址稱爲IO端口,當一個設備連接到總線時,他與一個或多個端口相關聯。

磁盤控制器是專門用來訪問磁盤的,CPU向磁盤控制器發送訪問命令,然後CPU會執行其他的指令,不會等到磁盤控制器返回數據,因爲CPU處理時鐘是1ns,而磁盤訪問速度是毫秒級的,在控制器訪問磁盤期間,CPU可以執行千萬條指令。所有控制器可以執行讀或者寫總線事務,不需要CPU干涉這一過程,當扇區中的數據安全到達主存後,控制器通過給CPU發送一箇中斷信號,這會導致CPU暫停當前的工作,跳轉到操作系統例程,這個程序會記錄下IO已經完成,然後將控制返回到被中斷的地方。處理內存中從磁盤訪問的數據。這種數據傳送就是DMA,即直接內存訪問機制。

  • 固態硬盤

固態硬盤是一種基於閃存的存儲技術。一個SSD封裝有一個或者多個閃存芯片或者閃存翻譯層組成,讀SSD相比於寫要快!

  • 局部性

一個編寫良好的計算機程序常常具有良好的局部性。他傾向於其他最近引用過的數據項的數據項,或者最近引用過的數據項本身,這種傾向性就是局部性原理。局部性分爲時間局部性和空間局部性。一個良好的時間局部性的程序,被引用過一次的內存位置很可能在不遠的將來再被多次引用,在一個空間局部性良好的程序中,如果內存位置被引用了一次,那麼程序很可能在不遠的將來引用附近的內存位置。

重複引用相同變量具有良好的時間局部性。
對於具有步長爲k的應用模式的程序,步長越小,空間局部性越好。
對於程序指令來說,循環有好的事件和空間局部性,循環體越小,循環迭代次數越多,局部性越好。

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