計算機系統的學習-筆記1

計算機系統漫遊

1、併發和並行
併發:指一個同時具有多個活動的系統
並行:指的是用併發來使一個系統運行的更快。

2、計算機三個層次實現併發和並行
(1)線程級併發
(2)指令級並行
通過藉助於流水線(pipelining)技術,將執行一個指令所需要的活動劃分爲不同的步驟,將處理器的硬件組織成一系列的階段,每一個階段執行一個步驟,這些階段可以並性地操作。
(3)單指令、多數據並行
允許一條指令產生多個可以並行執行的操作
3、抽象概念很核心
抽象使人不需要關注計算機底層的硬件和操作系統的複雜性。文件是對IO設備的抽象表示,虛擬內存是對主存和磁盤IO設備的抽象表示,進程是對處理器、主存和IO設備的抽象表示。
4、局部性原理
包括時間局部性和空間局部性,如果寫的代碼能夠符合局部性原理,則執行效率也能提升不少,下面給一個體現空間局部性的例子。

寫代碼的時候,很多時候優化措施就是利用了局部性原理,只是沒有明確地用這個概念來說,比如加緩存就是利用了局部性原理。

	public class SolutionTest {

    public static void main(String[] args) {
        int size = 10000;
        int[][] arr = new int[size][size];

        int sum = 0;
        long start = System.currentTimeMillis();
        for(int i = 0; i < size; i++) {
            for(int j = 0; j < size; j++) {
                sum += arr[i][j];
            }
        }
        // 按行遍歷二維數組花費110ms
        System.out.println((System.currentTimeMillis() - start));

        sum = 0;
        start = System.currentTimeMillis();
        for(int i = 0; i < size; i++) {
            for(int j = 0; j < size; j++) {
                sum += arr[j][i];
            }
        }
        // 按列遍歷花費實現2100ms
        System.out.println((System.currentTimeMillis() - start));
    }

}

手動跑上面的程序,可見按行遍歷的時間明顯比按列遍歷花費的時間少的多。因爲對於多維數組,在內存中數組是按行順序存儲的,按行遍歷明顯符合空間局部性。

5、隨機訪問存儲器
(1)SRAM(靜態隨機訪問存儲器)
常用與計算機的高速緩存部分,是非易失性的存儲器,只要有點,它就會永遠保持它的值。
(2)DRAM(動態隨機訪問存儲器)
易失性,數據需要週期性的通過讀出,重寫來刷新內存的每一位,SRAM單元比DRA單元需要更多的晶體管。
(3)增強型的DRAM

  • 快頁模式DRAM(Fast Page Mode DRAM,FPM DRAM)
    對同一行的連續訪問可以直接從行緩存區得到服務
  • 擴展數據輸出DRAM(Extended Data Out DRAM, EDO DRAM)
    和FPM DRAM類似,只是讓CAS信號在時間上更緊密些
  • 同步DRAM(Synchronous DRAM, SDRAM)
  • 雙倍數據速率同步DRAM(Double Data-Rate Synchronous DRAM, DDR SDRAM)
    是對SDRAM的一種增強,通過使用兩個時鐘沿作爲控制信號,從而使DRAM的速度翻倍,後面還有DDR、DDR2、DDR3、DDR4等(用提高有效帶寬的很小的預取緩存區的大小來劃分的)。

6、磁盤存儲
(1)磁盤構造

  • 盤片
  • 表面(每個盤片有兩個表面)
  • 磁道(每個表面上有非常多的磁道)
  • 扇區(每個磁道又可以劃分爲非常多的扇區)

每個磁道上的扇區數是相同的,而每個扇區數存放的位數也是相同的,這樣計算總的存儲非常方便

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