計算機組成與設計-計算機基本概要


Chpater1 計算機概要與技術

寫在前面

其實這本書對應的是國內開設的計算機專業課-計算機組成原理。實際上考研中408對應的考試指定參考教材是唐老爺子(唐朔飛)的計算機組成原理,這本書我雖然沒有看過,但是相當多的讀者都反應閱讀這本書的難度實在不小,故本人按照推薦選擇了這本由兩位著名的計算機領域的學者編寫的《計算機組成與設計:硬件/軟件 接口》一書,這兩位更有名的著作是《計算機體系結構:量化研究方法》一書,可以說是入門計算機體系結構必讀的經典。

21075473

本人已經基本完成了第一到第五章重點部分知識的閱讀,可以說這本書確實在敘述上十分平易近人,雖然對於這門課不可避免的存在大量的定義,但是本書都能采用甚至讓人感覺啰嗦的方式去讓讀者明白這個概念到底是什么,同時輔以適當的例子以及圖片加深理解。但是第四章處理器的難度着實不小,雖然已經編者已經盡可能的簡化語言敘述了,但這仍然是全書最重要也是最難懂的一章。

本人寫這本書的動機不僅是為了加深自己的理解,也可以作為其他跟我一樣入門者的參考,如果直接硬啃這本書的話,難度確實還是有的,希望這一系列的筆記能夠幫助到你。

作為計算機科學與技術專業的在讀本科生,我認為了解計算機底層的構造對於我們寫出性能更高的程序有非常大的幫助,我們不能只埋頭去寫一些我們完全不知道為什么存在的代碼,我們有必要去了解這些代碼到底是以何種方式運行在計算機底層結構中的。換言之,我們需要對身邊的一切事物保持一種追問的沖動,去試圖弄明白到底是為什么。

另外,我所閱讀的這本書是MIPS版本的,這本計算機組成與設計一書,還有ARM,RISC-V兩個版本。

21107539

21102253

想要了解MIPS、ARM、RISC-V這幾個有什么區別的話,可以自行搜索百度。

計算機系統結構中的8個偉大思想

面向摩爾定律的設計

摩爾定律我相信有些小伙伴都或多或少的聽過。實際上,計算機設計者面臨的一個永恆問題就是摩爾定律所驅動的快速變化。

摩爾定律指出單芯片上的集成度每18~24個月翻一番。所以計算機設計者必須預測其完成設計時的工藝水平,而不是設計開始時。

使用抽象簡化設計

抽象是我認為理解計算機中最重要的概念之一,抽象的概念實際上就是屏蔽下層的實現細節,只提供幾個最重要的接口給上層,供上層使用。提高硬件和軟件生產率的主要技術之一就是使用抽象來表示不同的設計層次。

加速大概率事件

我們都知道一個事實,大概率事件發生的可能要遠大於小概率時間發生的可能。所以在計算機實現中,加速大概率事件遠比優化小概率事件更能提高性能。

通過並行提高性能

在生活中,並行執行任務的情況已經隨處可見。實際上,從計算的誕生開始,計算機設計者就通過並行執行操作來提高性能。在之后的學習中,將會看到許多並行性能的例子。

通過流水線提高性能

在計算機系統結構中,一個特別的並行場景就是流水線。我們可以將許多事情的完成拆分成多個步驟,在並行執行任務中,可以在完成A的第一部分執行第二部分的時候,同時執行B的第一部分,這樣下去就形成了流水線。

通過預測提高性能

在某些情況下,如果假定從誤預測恢復執行代價不高並且預測的准確率相對較高,則通過猜測的方式提前開始某些操作,要比等到確切知道這些操作應該啟動時才開始要快一些。

存儲器層次

存儲器的速度經常影響性能,存儲器的容量限制了解題的規模。我們通常想要一個完美的解決方案即存儲器容量更大、速度更快、價格更便宜。但實際上這是違背客觀規律的,因此設計師們發現可以通過存儲器層次來解決這些麻煩。有關存儲器技術的相關知識,我們已經在第五章講述過,在這里不具體展開。

通過冗余提高可靠性

計算機不僅需要速度快,還需要一定的可靠性。由於任何一個物理器件都可能失效,因此我們可以使用冗余部件的方式來提高系統的可靠性。

程序概念入門

我們給出一個抽象的關系圖可以描述軟件以及硬件之間的關系。

1

系統軟件有兩種是對現代計算機而言十分重要的:操作系統和編譯程序。

操作系統是用戶的軟件與硬件之間的接口,操作系統可以對上層的用戶提供借口來實現用戶對底層硬件的操作。操作系統最重要的作用是:

  1. 處理基本的輸入和輸出操作( I/O操作)
  2. 內存管理(分配外存和內存)
  3. 為多個應用程序提供共享計算機資源的服務

高級語言到硬件語言

我們首先從底層說起,最底層的信息傳遞都是我們所知道的二進制傳輸。即所有的信息都是通過0和1來傳遞的,0代表低電平,1代表高電平。我們通常認為計算機語言就是二進制數。每個字母是二進制元數字中的一位。

在最開始的古老時代,程序員是直接使用二進制數與計算機通信的。所以他們發明了助記符,以符合人類的思維方式。隨后又開發了一種稱為匯編程序的軟件,可以將助記符形式的指令自動翻譯成對應的二進制。

機器可以理解的二進制語言我們成為機器語言,而以助記符表示的機器指令我們稱為匯編語言

但這仍然太過麻煩了,匯編語言要求程序員寫出計算機執行的每條指令,例如數據在寄存器之間來回的傳遞過程。高級程序語言以及其編譯程序的出現大大提高了軟件的生產率。這其實也是我們之前談到的抽象的一個例子。

我們在編譯軟件上編寫的C語言代碼,是如何變成機器語言的呢?大概可以分為以下幾個步驟。

【合集】CSAPP-深入理解計算機系統 - 1.1-1. 計算機系統漫游(Av711375008,P1).mp4_20211111_184532.287

我們之前所學的C語言、C++語言以及Java語言都屬於高級編程語言。

軟件部分的基本概念就到此結束,接下來我們說一說不是那么了解的硬件部分概念。

硬件概念入門

我們可以將計算機抽象成一個黑盒,那么最重要的部分一定就是黑盒的輸入和輸出,所以計算機兩個關鍵的部件就是輸入設備和輸出設備。輸入設備和輸出設備不僅僅局限於我們認知范圍內的東西,無線網絡可以即是輸入設備又是輸出設備。

顯示器

大多數個人移動設備都用液晶顯示(LCD)來獲得低功耗的顯示效果。大多數LCD顯示器采用動態矩陣顯示技術,其中每個像素都由一個晶體管精確地控制電流,是圖像更加清晰。

處理器

集成電路俗稱芯片,芯片上包含着處理器。處理器是計算機中最為活躍的部分,它嚴格的按照程序中的指令運行。人們也通常將處理器稱為中央處理單元。

處理器從邏輯上包含兩個主要部件:數據通路和控制器。數據通路負責完成算術運算,控制器負責指導數據通路、存儲器等其它設備按照指令運行。

數據安全

在第五章的講述中,我們並沒有特意強調數據安全的問題,實際上,數據安全的重要性經常被忽視。例如機械硬盤不能磕碰,過於劇烈的振動會導致機械硬盤內部的機械結構造成損壞,數據丟失。固態硬盤的壽命會隨着你寫入數據而逐漸降低。

計算機中的內存是易失性存儲器,在斷電之后,內存中的所有數據消失。而磁盤是非易失性存儲器,在斷電之后仍然能保存數據。

處理器制造技術

晶體管僅僅是一種受電流控制的開關。集成電路是由成千上萬個晶體管組成的芯片。我們通常用超大規模集成電路來描述現在的芯片。

芯片的制造從硅開始。因為硅的導電能力不強,我們稱硅為半導體材料。用特殊的化學方法對硅添加某些材料,可以把其轉化為以下三種類型之一:

  • 良好的導電體
  • 良好的絕緣體
  • 可控的導電體或絕緣體

下圖展示了集成電路制造的整個流程:

成品率被定義為合格芯片數占總芯片數的百分比。當芯片尺寸增大時,集成電路的價格會快速上升,因為成品率和晶圓中芯片的總數都下降了。為了降低價格,大芯片采用下一代工藝進行尺寸收縮,從而改進每晶圓的芯片數和成品率。

合格之后的芯片要連接到I/O引腳上,這一過程被稱為封裝

性能的度量

響應時間:也叫執行時間,是計算機完成某任務所需的總時間,包括硬盤訪問、內存訪問、I/O活動、操作系統所花費的時間、CPU執行時間等。

吞吐率:也叫帶寬,性能的另一種度量參數,表示單位時間內完成的任務數量。

我們可以有如下式子:

\[性能_x = 1/執行時間_x \]

我們經常使用"X是Y的n倍快"來表示性能的比較。

我們可以使用CPU執行時間這一概念只表示與CPU有關的消耗時間。CPU執行時間還可以進一步被分為用戶CPU時間和系統CPU時間。

一個程序的CPU執行時間 = 一個程序的CPU執行時鍾數 × 時鍾周期時間

一個程序的CPU執行時間 = 一個程序的CPU時鍾周期數 / 時鍾周期時間

CPU時鍾周期數 = 程序的指令數 × 每條指令的平均時鍾周期數

現在可以用指令數來寫出性能公式:

\[CPU時間 = 指令數 × CPI × 時鍾周期時間 \]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM