IB 計算機科學/系統基礎進階
標準等級
主題 1 - 系統生命週期和軟體開發 — 主題 2 - Java 程式構造 — 主題 3 - 計算機系統基礎 —
高階等級
主題 4 - 計算機數學與邏輯 — 主題 5 - 抽象資料結構與演算法 — 主題 6 - 系統基礎進階 — 主題 7 - 檔案組織
附加內容
程式文件 — 案例研究
返回 IB 計算機科學
指令暫存器是CPU控制單元(如下所示)的一部分,用於儲存指令。指令暫存器的位被微程式解碼,該微程式控制著計算機。
累加器是ALU(如下所示)中的一個暫存器。它暫時儲存算術或邏輯運算的結果,然後將其寫入主記憶體或另一個非累加器CPU暫存器(取決於被告知做什麼)。[1]
程式計數器是位於CPU(如下所示)中的一個暫存器。它用於儲存從直接訪問記憶體中獲取的下一條指令的地址,以便計算機執行。[2]
儲存檔案的最常見的物理裝置是磁性磁碟。磁性磁碟有一個或多個以磁碟形式存在的磁頭,它們覆蓋著磁性介質。硬碟磁頭由剛性金屬製成,而軟盤由更靈活的塑膠製成。磁性磁碟上的每個磁頭都有兩個工作表面。較舊的硬碟驅動器有時不會使用堆疊的磁頭中頂部的或底部的表面,因為它們更容易損壞。
磁頭的表面被組織成許多圓形環,稱為磁軌。一組直接位於另一組上方的磁軌(如下圖所示)稱為一個柱面。
此外,每條磁軌被分成扇區。一個扇區中儲存的資訊,一個塊,是磁碟和主記憶體之間傳輸的單位(通常是4K位元組左右)。作業系統確定每個檔案所在的塊的位置。
磁性磁碟上的資料由讀寫磁頭讀取。標準配置(如下圖所示)每個表面使用一個磁頭,每個磁頭在單獨的臂上,由一個共同的臂元件控制,該元件同時將所有磁頭從一個柱面移動到另一個柱面。
從磁碟到計算機傳輸資料的速率由三個不同的步驟組成
| 尋道時間 | 將磁頭移動到正確磁軌所需的時間。 |
|---|---|
| 延遲(旋轉延遲) | 等待扇區旋轉到磁頭位置所需的時間。 |
| 塊傳輸時間 | 實際傳輸資料所需的時間。 |
所有這些時間都約為幾十毫秒。尋道時間和延遲時間會根據所需塊相對於磁頭當前位置的位置而變化。將檔案的所有塊放在一個磁軌上很有用,以最大程度地減少訪問檔案時的尋道時間和延遲。同樣,對於更大的檔案,最好將它全部放在同一個柱面上(不同磁碟上的一組對應磁軌)。還有許多其他放置技巧(例如,將使用頻繁的檔案放在中間磁軌上,以減少平均尋道時間)。但是,由於檔案的大小不一,並且可以動態地改變大小,因此通常不可能將塊放置在最佳位置。 [3] [4]
握手是指一臺計算機與另一臺計算機或任何想要連線到計算機的裝置建立連線。握手可以細分為幾個步驟,例如驗證連線、速度和嘗試連線的計算機的授權。例如:當調變解調器連線到另一個調變解調器時,撥號就是它們之間的握手。可以透過進入控制面板來靜音調變解調器握手。 [5] [6]
埠連線通常位於計算機背面的後面,它通常類似於插頭。硬體埠允許訪問外部裝置。例如 USB、印表機、滑鼠。
在談論網際網路或網路時,網路埠是傳送資訊的位置。一個常用的埠是 http,即埠 80。它通常被稱為虛擬埠。
一種常見的管理傳輸的方法是提供一個狀態位,該狀態位將被髮送到一個輔助輸入埠。例如,單個位中的 1 可以告訴 CPU 印表機已準備好接收更多資料。如果出現 0,則會告訴 CPU 印表機正在忙碌,因此 CPU 暫時不應該傳送任何新資料。另一個例子是,如果不同埠中的一個位可以告訴 CPU 已按下鍵盤鍵並且它在資料埠可用。如果顯示 0,則表示沒有鍵盤按鍵。
虛擬埠是序列埠的模擬。該埠可以由軟體建立,該軟體將啟用系統中的額外埠。虛擬埠可以被賦予任何名稱(COM1337、VSP11 等)。您的 PC 中可以有無限數量的虛擬埠。埠越多,計算機效能越低。
虛擬埠複製所有硬體序列埠功能,包括波特率、資料位、奇偶校驗位、停止位等。它們控制資料流,複製所有訊號線(DTR/DSR/CTS/RTS/DCD/RI)並自定義引腳分配。常見的虛擬埠是藍牙。如果計算機上的物理埠較少,虛擬埠可能很有用。虛擬埠的另一個用途是透過網際網路或 LAN 與其他序列裝置通訊,就像它們相互連線一樣。此類示例可以在 Hamachi 和 Garena 等應用程式中找到。連結:[www.garena.com]、[www.hamachi.com] [7]
緩衝區是記憶體的一部分,用於在資料從一個地方移動到另一個地方時臨時儲存資料。資料儲存在緩衝區中,然後從輸入裝置(如鍵盤)接收資料到輸出裝置(如印表機)。當資料在計算機中的程序之間移動時,也使用緩衝區。這可能與電信中的緩衝區有關。緩衝區可以在硬體或軟體中找到,但它主要在軟體中實現。如果正在傳輸的資料具有不同的接收和處理速率,則在這種情況下的典型情況下使用緩衝區。緩衝區與 I/O 到硬體相結合,例如磁碟驅動器,將資料從一個地方傳送到另一個地方,或在揚聲器上播放聲音。
一些快取記憶體充當緩衝區。但它並不完全相同,快取記憶體基於同一個資料(data 的複數)將被多次讀取的假設。快取記憶體的目的是減少對速度較慢的儲存器的訪問。快取記憶體是一個抽象層,這意味著它是一種隱藏特定功能集細節的方式。例如 OSI 7 層模型。
OSI 7 層模型
計算機始終需要與其他外部裝置(輸入/輸出裝置)傳輸資料。在計算機記憶體和外部裝置之間傳輸資料有兩種不同的方法。
PIO (Programmed I/O) 是一種方法,其中處理器不斷讀取或寫入記憶體單元(8 位、16 位或 32 位,具體取決於裝置介面),直到資料傳輸完成。顯然,這種方法消耗了大量的處理器週期。有幾種不同的 PIO 速度,稱為程式設計 I/O 模式,或者更常見的是 PIO 模式。下表顯示了五種不同的 PIO 模式
| PIO 模式 | 週期時間(納秒) | 最大傳輸速率(MB/s) | 定義標準 |
|---|---|---|---|
| 模式 1 | 600 | 3.3 | ATA |
| 模式 2 | 383 | 5.2 | ATA |
| 模式 3 | 240 | 8.3 | ATA |
| 模式 4 | 180 | 11.1 | ATA-2 |
| 模式 5 | 120 | 16.7 | ATA-2 |
PIO 是 90 年代中期裝置和 IDE/ATA 硬碟之間傳輸資料的唯一方法。三個較低速度的模式(模式 1、模式 2、模式 3)被定義為原始 ATA 標準文件的一部分;另外兩個(模式 4、模式 5)作為 ATA-2 的一部分(以及多個非官方標準的一部分)新增。[8]
DAM (Direct Access Memory) 是一種功能,它允許連線的外部裝置(如磁碟驅動器)上的資料直接傳送到主機板上的計算機記憶體。在 DMA 方法中,系統向裝置發出一個 I/O 命令,啟動一個 DMA 事務,然後將程序放入等待佇列,然後處理器將被釋放,以便進行其他傳輸或執行程式碼。DMA 控制器將透過發出中斷訊號來通知系統其當前操作已完成。雖然資料仍然一次從裝置傳輸一個記憶體單元,但現在傳輸到主記憶體繞過了 CPU,因為 DMA 控制器可以直接訪問記憶體單元。[9]
讓我們更深入地瞭解一下!
正如DMA方法中提到的,處理器在整個傳輸過程中不會參與;它只是啟動傳輸,之後資料可以直接從或到主記憶體傳輸。但是CPU是如何做到的呢?
為了啟動傳輸,處理器應該將三個不同的值載入到DMA控制器中的三個不同的暫存器中。這些值是
1- 源裝置的標識
2- 資料傳輸開始的記憶體位置
3- 要傳輸的位元組數
然後,DMA控制器使用總線上的控制線與IO單元協作,執行用於管理資料傳輸的握手協議。傳輸完成後,DMA透過中斷通知CPU。使用DMA,資料不會透過CPU暫存器,而是直接沿著匯流排從源到目的地。[10]
直接記憶體訪問,也稱為DMA,是現代計算機的一項功能。在某些計算機中,硬體子系統具有自己的訪問系統記憶體,用於獨立於中央處理單元(CPU)進行讀寫。許多系統使用DMA,例如磁碟驅動器控制器、顯示卡、網絡卡和音效卡。具有DMA的計算機可以比沒有DMA通道的計算機以更少的CPU開銷從裝置傳輸資料。
如果沒有DMA,CPU將在整個讀寫操作過程中完全佔用,無法執行其他任何工作。DMA可以啟動傳輸、執行程式以及接收和中斷來自DMA控制器的訊號。這對即時計算非常有用。
投票!
您能請投票並告訴我們您認為哪個“直接訪問記憶體”的定義更清楚嗎?您可以在討論區回覆。
處理器在計算機中的職責之一是管理裝置和程式,由於有許多裝置連線到處理器,並且還有許多程式(在作業系統上執行),因此處理器需要能夠弄清楚在每個時刻應該做什麼。兩種不同的方法是*輪詢*和使用*中斷*。
輪詢是一種方法,處理器在迴圈中檢查每個裝置的當前狀態並查詢資料。當一個裝置上有新資料可用時,它可以讀取資料並處理傳入的位元組。
然而,這種方法可以用來管理裝置和程式,但也有一些很大的問題。首先,處理器總是忙於檢查所有裝置和程式,而不是處理資料並執行一些有用的程式碼。其次,在這種方法中,當資料傳輸速率過高時,很可能丟失一些到達的位元組。[11]
中斷是來自連線到計算機的裝置或程式的訊號,傳送到作業系統(作業系統),使其停止並弄清楚下一步該做什麼。由硬體發出的中斷稱為*硬體中斷*,而由程式發出的中斷稱為*軟體中斷*、*陷阱*或*異常*。一臺普通的PC支援16個硬體中斷和256個軟體中斷。每種型別的異常(軟體中斷)都與一個例程相關聯,該例程在中斷髮生時接管控制。這個例程稱為*中斷處理程式*。
傳送到處理器的實際中斷稱為IRQ(中斷請求)。每個IRQ都是一個二進位制程式碼,與其他中斷不同,處理器使用這些二進位制程式碼來區分不同的中斷。但是,這些中斷在每個裝置和處理器上可能不同,但它們通常遵循一個標準。下表顯示了典型的硬體中斷[12]
| IRQ編號 | 二進位制程式碼 | 典型用途 | 描述 |
|---|---|---|---|
| IRQ 0 | 00000000 | 系統計時器 | 此中斷保留給內部系統計時器。它永遠不可用於外設或其他裝置。 |
| IRQ 1 | 00000001 | 鍵盤 | 此中斷保留給鍵盤控制器。即使在沒有鍵盤的裝置上,此中斷也專門用於鍵盤輸入。 |
| IRQ 2 | 00000010 | IRQ 8-15 的級聯中斷 | 此中斷將第二個中斷控制器級聯到第一個。 |
| IRQ 3 | 00000011 | 第二個序列埠(COM2) | 第二個序列埠的中斷,通常是第四個序列埠(COM4)的預設中斷。 |
| IRQ 4 | 00000100 | 第一個序列埠(COM1) | 此中斷通常用於第一個序列埠。在不使用PS/2滑鼠的裝置上,此中斷幾乎總是由序列滑鼠使用。這也是第三個序列埠(COM3)的預設中斷。 |
| IRQ 5 | 00000101 | 音效卡 | 這是大多數音效卡在查詢IRQ設定時首選的中斷。 |
| IRQ 6 | 00000101 | 軟盤控制器 | 此中斷保留給軟盤控制器。 |
| IRQ 7 | 00000110 | 第一個並行埠 | 此中斷通常保留給印表機使用。如果不使用印表機,則此中斷可以用於使用並行埠的其他裝置。 |
| IRQ 8 | 00000111 | 即時時鐘 | 此中斷保留給系統的即時時鐘計時器,不能用於任何其他目的。 |
| IRQ 9 | 00001001 | 空閒 | 此中斷通常在裝置上保留以供外設使用。 |
| IRQ 10 | 00001010 | 空閒 | 此中斷通常在裝置上保留以供外設使用。 |
| IRQ 11 | 00001011 | 空閒 | 此中斷通常在裝置上保留以供外設使用。 |
| IRQ 12 | 00001100 | PS/2 滑鼠 | 此中斷保留給使用 PS/2 滑鼠的機器上的 PS/2 滑鼠。如果不使用 PS/2 滑鼠,則此中斷可以用於其他外設,例如網絡卡。 |
| IRQ 13 | 00001101 | 浮點單元/協處理器 | 此中斷保留給整合的浮點單元。它永遠不可用於外設或其他裝置,因為它專門用於內部訊號。 |
| IRQ 14 | 00001110 | 主 IDE 通道 | 此中斷保留給主 IDE 控制器使用。在不使用 IDE 裝置的系統上,IRQ 可以用於其他目的。 |
| IRQ 15 | 00001111 | 次要 IDE 通道 | 此中斷保留給次要 IDE 控制器使用。 |
當一個輸入或輸出裝置向 CPU 傳送中斷時,在處理器捕獲它之前,該 IRQ 會經過一個名為PIC(可程式設計中斷控制器)的晶片。PIC 從優先順序最高的裝置中選擇一個 IRQ 傳遞給 CPU,如果處理器準備接受該 IRQ,PIC 會將其傳送給 CPU。處理器有一個標誌,說明它是否準備接受 IRQ。如果 CPU 捕獲了請求(因為它也可以忽略請求),它會暫時停止當前正在做的事情並執行與該請求相關的適當程式碼。ISR 完成後,CPU 返回到它正在執行的程式並恢復其先前的任務。[13]

如何查詢您的 PC IRQ?
Windows
為了在 Windows 中找到裝置的 IRQ,請開啟裝置管理器(您可以在“我的電腦”或 Windows Vista 中的“計算機”上右鍵單擊,然後單擊“屬性”。然後單擊“裝置管理器”。或者在您的計算機中搜索“裝置管理器”。)。右鍵單擊任何裝置,在開啟的表單中,轉到“資源”選項卡,檢視 IRQ 前面的二進位制程式碼。
Linux
對於大多數發行版,這將起作用
# dmesg | grep irq
| 輪詢和中斷系統之間的比較 |
| 正如前面提到的,在輪詢系統中,處理器應該在迴圈中檢查所有裝置(以及在作業系統上執行的程式)的狀態,以檢視接下來應該做什麼;而在使用中斷的系統中,處理器不需要不斷檢查所有裝置和程式,而是每個裝置在需要時向處理器傳送訊號。顯然,在第一種方法中,CPU 總是忙於檢查裝置,因此它執行有用程式碼和處理資料的能力較低。這種方法的另一個缺點是,想要與處理器互動的裝置或程式必須等待處理器完成迴圈並轉向該特定裝置或程式。而在中斷系統中,客戶端傳送一個訊號(即一個位元組)並通知處理器。因此,使用中斷的系統中客戶端和處理器之間的通訊速度會加快。 |
資料透過通訊介質傳輸,可以序列傳輸或並行傳輸。大多數微型計算機使用者都知道他們的計算機配備了序列埠和並行埠。這將使計算機能夠傳輸序列和並行訊號。
在序列傳輸中,傳送的位元組一個接一個地沿著介質傳送。例如,如果要傳送“SYAMIL”,它將首先發送“S”,然後傳送“Y”,然後傳送“A”,依此類推。對於並行傳輸,它們是分開發送的,並行路徑對應於位元組的每個位,以便所有位同時到達。
由於並行傳輸比序列傳輸更有效率,因此它需要更多的佈線和額外的位路徑,除此之外,它比序列傳輸更昂貴。彼此靠近的裝置通常使用序列傳輸。例如,並行傳輸計算機將把文字文件傳送到連線到它的印表機。[14]
- ↑ Irvine, Kip R. (2007). Assembly Language for Intel-Based Computers (第 5 版 ed.). Pearson Prentice Hall. pp. pp. 633, 622. ISBN 0-13-238310-1.
{{cite book}}:|edition=has extra text (help);|pages=has extra text (help) - ↑ Hutchinson Encyclopaedia. Helicon Publishing LTD 2008.
- ↑ 磁碟儲存[1]
- ↑ 儲存結構[2]
- ↑ "握手." <http://www.mrhope.com/jargon/h/handshak.htm>.
- ↑ "握手." <http://webster.cs.ucr.edu/AoA/Windows/HTML/IOa3.html>.
- ↑ "虛擬埠." <www.ftdichip.com/Drivers/VCP.htm>.
- ↑ PIO[3]
- ↑ 8237 DMA 控制器[4]
- ↑ DMA – 直接記憶體訪問[5]
- ↑ Sunsite [6]
- ↑ 寬頻 [7]
- ↑ 中斷控制[8]
- ↑ "序列和並行傳輸." <http://www.blurtit.com/q511025.html>.

