- 計算思維與Python編程
- (美)瑪麗亞·利特文 加里·利特文
- 1642字
- 2020-05-20 09:26:02
1.2 CPU和內存
計算機的核心是中央處理器(CPU)。在個人計算機中,CPU是由微小的硅芯片制成的微處理器。該芯片上刻有數百萬個晶體管。晶體管是一種微型數字開關:它控制信號的兩種狀態,“開”或“關”,即“1”或“0”。微處理器由小于1平方英寸的陶瓷外殼保護,安裝在印制電路板(也稱為主板)上。主板上還有內存芯片,以及用于連接其他設備的端口(見圖1-1)。

圖1-1 樹莓派3B型單板計算機,放在3.5平方英寸×2.25平方英寸的印制電路板上
計算機存儲器是一系列統一的存儲單元,這些單元稱為“字節”。
1字節保存8位信息。
1位是最小的信息存儲單元:“1”或“0”,“真”或“假”,“開”或“關”。
CPU可以按任意順序訪問內存中的字節。這就是計算機內存被稱為“隨機存取存儲器(RAM)”的原因。同樣的內存用于存儲不同類型的信息:數字、字母、聲音、圖像、程序等。這些信息,必須以某種方式編碼為0和1的序列。
2019年生產的典型個人計算機具有8GB(千兆字節)的RAM。
1 K字節(KB)= 1024字節 = 210字節,大約一千字節。 1 M字節(MB,“兆”)= 1024 K字節 = 220字節= 1,048,576字節,大約一百萬字節。 1 G字節(GB,“吉”)= 1024 M字節 = 230字節 = 1,073,741,824字節,大約10億字節。 1 T字節(TB)= 1024 G字節 = 240字節。 1 P字節(PB)= 1024 T字節 = 250字節。
一頁有500~600個單詞的文本,沒有圖片或特殊格式,大約需要3KB的存儲空間;一張高分辨率照片可能需要2~3MB的存儲空間,而1GB存儲空間可以壓縮的MP4格式保存數小時的視頻。
CPU解釋并執行存儲在RAM中的指令。CPU獲取下一條指令,解釋它的操作代碼,并執行適當的操作。有些指令用于算術和邏輯運算,有些用于將字節從一個位置復制到另一個位置,還有一些用于改變指令的執行順序。除非特定指令告訴CPU“跳轉”到程序中的另一個位置,否則指令將按順序執行。“條件分支”指令告訴CPU繼續下一條指令或跳轉到另一個位置,具體情況取決于前一操作的結果。
以上這些操作都以驚人的速度發生。現代CPU以幾GHz的速度運行,每條指令需要一個或幾個時鐘周期。
▼
為了更好地了解CPU指令及其執行方式,讓我們來看看“匯編語言”,這是一種低級計算機語言。它是你所聽過的現代語言的基礎,如C++、Java、JavaScript和Python。
圖1-2展示了一個非常短的匯編語言程序,用于8088微處理器(在20世紀80年代早期用于最初的IBM PC),其中包含相應指令的十六進制代碼(十六進制系統在第6章中解釋)和我們的注釋。匯編語言代碼非常接近實際的機器代碼,但它允許你使用名稱而不是數字,來表示指令和內存位置。
CPU有幾個內置存儲器單元,稱為寄存器。圖1-2中的代碼使用的兩個寄存器,稱為AX和BX。例如,第一條代碼(MOV BX, 0000)將0移入BX寄存器。

圖1-2 一段8088匯編語言代碼
我們將它留給你作為練習(練習題6),請弄清楚這段代碼計算的內容。結果存儲在BX寄存器中。
計算機代碼中的錯誤稱為“缺陷(bug)”,消除程序錯誤的過程稱為“調試(debug)”。
圖1-2中的代碼是在一個名為debug的程序的幫助下生成的,該程序隨MS-DOS操作系統和早期版本的Windows一起提供。調試程序允許程序員以受控方式逐步執行程序,并在每一步檢查內存的內容。在程序未按預期工作時,使用調試程序可以幫助發現錯誤。
第1.2節練習
1.找到一臺廢棄的臺式計算機,確保已拔下電源線,然后取下機箱蓋(或在網上查找打開機箱的臺式PC的高分辨率圖片)。識別主板、CPU和內存芯片,識別計算機的其他組件:電源、硬盤、CD ROM驅動器。
2.計算機內存稱為RAM,因為: ?
(A)它提供對數據的快速訪問
(B)它安裝在主板上
(C)它以兆字節為單位
(D)它的字節可以按隨機順序尋址
(E)它的芯片安裝在矩形陣列中
3.我的舊PC有512MB的RAM和120GB的硬盤,硬盤存儲空間是RAM的多少倍??
4.可以用2位編碼多少個不同的值?3位呢?1字節呢?
5.ASCII碼表示在典型的美式鍵盤上可以找到的英文字母、數字和其他字符的大寫和小寫字母。每個字符以相同的位數編碼。每個字符1字節是否足以表示所有這些字符?每個字符所需的最小位數是多少? ?
6.◆在執行圖1-2中的程序段后,解釋AX和BX寄存器的內容。這段代碼計算了什么? ?提示:十六進制的15是十進制的21。? ?
- Learning Scala Programming
- Extending Jenkins
- 程序員面試白皮書
- Drupal 8 Blueprints
- Bulma必知必會
- Web Application Development with R Using Shiny(Second Edition)
- Swift 3 New Features
- PrimeFaces Blueprints
- Scala Functional Programming Patterns
- Simulation for Data Science with R
- Scrapy網絡爬蟲實戰
- Drupal 8 Development Cookbook(Second Edition)
- XML程序設計(第二版)
- 游戲設計的底層邏輯
- 基于JavaScript的WebGIS開發