1. 程式人生 > >編碼的奧祕:匯流排連線

編碼的奧祕:匯流排連線

轉自:《編碼的奧祕》    第二十一章

 

         處理器無疑是計算機中最重要的部件,但並不是唯一的部件 。一臺計算機也需要隨機訪問儲存器( R A M)來存放機器碼指令以便讓處理器執行。計算機還必須有一些方法使這些指令進入 R A M(輸入裝置)以及一些方法使程式執行結果得以看見(輸出裝置) 。前面講過,R A M是易失性的,當斷電時,它的內容就會丟失。所以計算機中另一個有用的部件是永久儲存裝置,當計算機斷電的時候,它們可以儲存程式碼和資料。

         組成一臺完整計算機的所有積體電路必須安裝在電路板上。在一些小型機器上,所有的積體電路可以安裝在一塊板上,但更常見的是,不同的部件分開安裝在兩塊或更多的板上,這些板之間通過匯流排互相通訊。簡單地說,匯流排是提供給計算機中每塊電路板的數字訊號的集合,這些訊號可以分為 4類:

         • 地址訊號。這些訊號由微處理器提供,常用來定址 R A M單元,也可用來定址連線到計 算機上的其他部件。
         • 資料輸出訊號。也由微處理器提供,用來寫入資料到 R A M或其他裝置。要仔細推敲輸 入( i n p u t)和輸出( o u t p u t)               的含義。資料輸出訊號是從微處理器輸出,變成 R A M和其他裝置的資料輸入訊號。
         • 資料輸入訊號。是由計算機的其餘部分提供,由微處理器讀入的訊號。資料輸入訊號通常來自於 R A M的輸出,也即表示微               處理器讀入儲存器內容。但是其他部件也提供資料輸入訊號給處理器。
         • 控制訊號。由各種各樣的訊號組成,通常與計算機的特定處理器的控制訊號一致。控制訊號可來自於微處理器或從其他部件               傳送到微處理器。例如,微處理器可用一個控制訊號來指示它要寫一些資料到某一儲存器地址。

另外,匯流排給計算機中的各個電路板提供電源。

         早期家用計算機流行的一種匯流排是 S - 1 0 0匯流排,該匯流排 1 9 7 5 年在第一臺家用計算機 M I T SA l t a i r上首先採用。儘管這種匯流排以 8 0 8 0微處理器為基礎,但後來它也被其他一些處理器,如6 8 0 0採用。 S - 1 0 0的電路板的規格是 5 . 3 × 1 0英寸,電路板的一邊有 1 0 0個接頭可插在插槽裡(這就是 S - 1 0 0的來源) 。

         S - 1 0 0計算機有一塊較大的板稱為母板或主機板,上面有若干個 (如: 1 2個)互相連線起來的S - 1 0 0匯流排插槽,這些插槽有時也叫擴充套件槽, S - 1 0 0電路板(也叫擴充套件板)插到插槽裡。 8 0 8 0微處理器及支援晶片(第 1 9章曾提到過)在此 S - 1 0 0板上。 RAM 在另一個或更多的其他 S - 1 0 0電路板上。

         S - 1 0 0匯流排是為 8 0 8 0晶片設計的,它有 1 6個地址訊號, 8個數據輸入訊號, 8個數據輸出訊號(前面講過, 8 0 8 0自身是把資料輸入、輸出訊號混合在一起的,由 8 0 8 0所在電路板上的另一個晶片來把這些訊號分開成單獨的輸入、輸出訊號) 。總線上還有 8箇中斷訊號,這些訊號由那些需要 C P U立即做出響應的部件產生。例如(在本章後面將要講到),當在鍵盤上敲一個鍵時,鍵盤會產生中斷訊號, 8 0 8 0執行一個小程式確定是哪一個鍵並做出相應反應。包含8 0 8 0的電路板上通常還有一個晶片稱作 Intel 8214優先順序中斷控制單元,它用來處理這些中斷。當中斷產生時,該晶片產生一箇中斷訊號給 8 0 8 0, 8 0 8 0響應中斷。該晶片提供 R S T( R e s t a r t)指令使得微處理器儲存當前的程式計數器,並根據具體的中斷訊號轉移到地址 0 0 0 0 h、 0 0 0 8 h、0 0 1 0 h、 0 0 1 8 h、 0 0 2 0 h、 0 0 2 8 h、 0 0 3 0 h或0 0 3 8 h處去執行。

       如果正在設計一個具有新的匯流排型別的新計算機,你可以選擇公開你的匯流排規範或者保密。

        如果一個匯流排規範是公開的,其他廠商—稱為第三方廠商—可以設計並銷售與這種匯流排相配套的擴充套件板。這些附加的擴充套件板使得計算機更有用且更令人滿意,計算機的大量銷售為擴充套件板提供了更大的市場。這種現象刺激許多小的計算機系統設計者堅持開放體系結構的原則,允許其他廠商生產計算機的外圍裝置。這樣總有一種匯流排最終可以認為是工業界的標準。標準已成為個人計算機工業的重要組成部分。

        最著名的開放式體系結構個人計算機起源於 IBM PC。 1 9 8 1 年秋季, I B M公開了包括整個計算機完整電路圖的 P C機技術參考手冊,其中還包括 I B M為它製造的所有擴充套件板。這個手冊是很重要的工具,它使得許多製造商可以生產自己的 P C機擴充套件板並且事實上產生了 P C機的“克隆”體—相容P C機,相容 P C機與 I B M P C機幾乎完全相同且執行相同的軟體。

         源於 IBM PC 的更新換代產品現在已佔到桌面計算機系統大約 9 0 %的份額。儘管 I B M自身只有很少的市場份額,但它畢竟要比最初的 P C機採用專有設計的封閉式體系結構所佔的份額要大。蘋果公司的 M a c i n t o s h機開始就採用封閉式體系結構,根本不考慮開放其體系結構,這當初的決定可以用來解釋為什麼在目前的桌面計算機市場上 M a c i n t o s h只佔有不到 1 0 %的份額。(記住一點,無論一個計算機系統是在開放體系結構還是封閉體系結構下設計,都不會影響到其他公司開發在該計算機系統上執行的軟體。只有那些特定的視訊遊戲軟體開發商才會限制其他公司開發用於他們系統的軟體。 )

        最初的 IBM PC使用 Intel 8088 微處理器,可定址 1 M儲存空間。儘管 8 0 8 8處理器內部是 1 6位,但在外部按照 8位來定址儲存器。 I B M為最初的 P C機設計的匯流排現在稱作 I S A( i n d u s t r ystandard architecture, 工業標準體系結構)匯流排。擴充套件板上有一個 6 2針的插頭,訊號包括 2 0個地址訊號, 8 個組合(複用)資料輸入 /輸出訊號, 6 箇中斷請求訊號和 3 個 D M A ( d i r e c t memory access,直接儲存器訪問)請求訊號。 D M A允許儲存裝置(本章最後將要講到)比採用別的方法更快地進行操作。通常,微處理器處理所有的記憶體讀 /寫操作,但通過 D M A,其他裝置可繞過微處理器通過匯流排直接進行記憶體讀 /寫操作。

         在S - 1 0 0系統裡,所有的部件都安裝在擴充套件板上。在 IBM PC機裡,微處理器、一些支援晶片及一些 R A M安裝在 I B M所稱的系統板上,系統板也常稱作主機板或母板。

         1 9 8 4年, I B M推出了 Personal Computer AT (先進技術型個人計算機 ),它採用 1 6位的 I n t e l8 0 2 8 6微處理器,可定址 1 6 M儲存器。 I B M保留了已有的匯流排,但另加了一個 3 6針的插槽,其中包括新增的 7個地址訊號(儘管只需要 4個) , 8個數據輸入 /輸出訊號, 5箇中斷請求訊號和 4個D M A請求訊號。

         無論是資料寬度(從 8位到 1 6位到 3 2位)還是輸出的地址訊號數目,當處理器在這些方面的增長超出匯流排能力時,就需要對匯流排進行更新換代;當處理器達到較高的速度時,它也會超出匯流排的能力。早期的匯流排是為時鐘頻率是幾兆赫而不是幾百兆赫的處理器設計的。如果匯流排的設計不能適應高速傳輸,則可能引起射頻干擾( R F I),從而引起收音機或電視機附近的靜態或其他噪聲干擾。

        1 9 8 7年, I B M推出了微通道體系結構( micro channel architecture, M C A)匯流排,這種匯流排的某些方面 I B M已申請了專利,這樣 I B M就可以從其他使用這種匯流排的公司收到授權費用。可能也正因為如此, M A C匯流排沒有成為工業標準。取而代之的是 1 9 8 8年9家公司 (不包括 I B M )聯合推出的 3 2位E I S A( Extended Industry Standard Architecture,擴充套件的工業標準體系結構)匯流排。近年來, I n t e l公司設計的外圍部件互聯( peripheral component interconnect, P C I)匯流排在P C相容機上已普遍採用。

         為理解計算機中各種不同部件是如何工作的,讓我們再重新回到 7 0年代中期較質樸的年代。假想我們正在為 A l t a i r或者為我們自己設計的 8 0 8 0、 6 8 0 0計算機設計電路板,我們可能打算為計算機設計一些儲存器,用一個鍵盤作輸入,一個電視機作輸出,此外還有一些方法用來儲存關閉計算機電源時儲存器中的內容。現在來看一看我們所設計的把這些部件新增到計算機中所用的各種各樣的介面。

         第1 6章講過, R A M陣列有地址輸入、資料輸入、資料輸出訊號,並且有一個控制訊號用來寫入資料到儲存器。地址輸入訊號的個數決定了 R A M陣列中可以存放的數值的個數:

 

資料輸入 /輸出訊號的數目表明了存放的數值的位數。

       7 0年代中期家用計算機中常用的儲存器晶片是 2 1 0 2:

         2 1 0 2是MOS(metal_oxide semiconductor, 金氧半導體 )家族的成員,與 8 0 8 0、 6 8 0 0中使用的 M O S技術一樣, M O S半導體器件很容易與 T T L晶片連線,但前者通常比 T T L器件的電晶體密度高但速度較慢。

         通過統計地址訊號( A0~ A9)、資料輸出訊號( D O)和資料輸入訊號( D I),可以算出這種晶片可以存放 1 0 2 4位。根據採用的 2 1 0 2晶片的型別,訪問時間—即從一個地址提供給晶片到資料輸出成為有效所需要的時間—從3 5 0~ 1 0 0 0納秒不等。 R /-W(讀 /寫)訊號在讀儲存器時是 1 。當向晶片寫資料時, R /-W必須在至少為 1 7 0~ 5 5 0納秒的時間段內為 0,這也取決於所選用的 2 1 0 2晶片型別。

          特別要提到的是-C S訊號,它表示片選。當訊號為1時,片子不被選中,意味著片子對R /-W訊號不做響應。然而, -C S訊號對晶片還有一種重要作用,我們下面將簡單描述一下。

          當然,如果要為一個 8位的微處理器組織儲存器,則肯定希望儲存器按 8位而不是 1 位存放。按最少計算,需要把 8個這樣的 2 1 0 2晶片連線在一起用來存放整個位元組。可以把所有 8個晶片對應的地址訊號、 R /-W和-C S訊號連線起來達到此目的,結果如下圖所示:

        這是一個 1 0 2 4× 8的R A M陣列,即 1 K B的R A M

 

        從實際觀點來看,需要把這些儲存晶片安裝在一個電路板上。在一塊板上可以裝多少呢?如果真的把它們緊緊安裝在一起,可以在一個 S - 1 0 0板上安裝 6 4個這樣的晶片,提供 8 K B儲存器。但是,最好還是寬鬆地安裝,用 3 2個晶片組成 4 K B儲存器。連線在一起用來儲存完整位元組的一組晶片(見上圖)稱為儲存體。一個 4 K B儲存器由 4個儲存體組成,每個儲存體有8個晶片。

        像8 0 8 0、 6 8 0 0這樣的 8位微處理器有 1 6位地址可用來定址 6 4 K B儲存器。如果連線的是有 4個儲存體的 4 K B儲存器板,則儲存器板中 1 6位地址訊號完成的功能如下:

        

       1 0個地址訊號 A0~A9直接連到 R A M晶片,地址訊號 A1 0和A11用來選擇 4個儲存體中的一個,地址訊號 A1 2~ A1 5用來確定是哪一塊儲存器板。每個 4 K B 儲存器板佔據微處理器整個 6 4 K B儲存空間 1 6個不同的 4 K B地址空間範圍中的一個,它們分別是:

       假定一個 4 K B儲存器板的地址範圍是 A 0 0 0 h~ A F F F h,則意味著地址 A 0 0 0 h~A 3 F F h提供給其中的第 1 個1 K B儲存體,地址 A 4 0 0 h~ A 7 F F h提供給第 2個儲存體,地址 A 8 0 0 h~A B F F h提供給第 3個儲存體,地址 A C 0 0 h~A F F F h提供給第 4個儲存體。

       連線 4 K B儲存器板是很經常的,後面可看到如何靈活地確定儲存器板的地址範圍。為獲得靈活性,可以使用 D I P開關 ,一種雙排直插封裝的系列( 2~ 1 2個)微小開關。它可以插入到普通的 I C插座中:

 

       可以把這個開關和匯流排中的高 4位地址訊號連線到稱作(比較器)的電路中:

      前面講過,只要兩個輸入中有一個而不是兩個都為 1 ,則 X O R(異或)門的輸出為 1 。這也就是說如果兩個輸入相同—都為0或都為 1—則異或門的輸出為 0。

       假設閉合對應於 A1 3和 A1 5的開關,則意味著我們選擇的儲存器板的地址範圍從 A 0 0 0 h~A F F F h。

 

       如果來自匯流排的地址訊號 A1 2、 A1 3、 A 1 4和A1 5與開關中設定的地址相同,則 4個異或門的輸出都是 0,也即 N O R(或非)門的輸出為 1 :

 

        可以把E q u a l訊號通過 2- 4譯碼器生成-C S訊號來選擇儲存器板中的 4個儲存體之一:

        

例如A1 0 = 0, A11 = 1 ,則選擇第 3個儲存體。

        如果回憶一下第 1 6章所講的組織 R A M陣列的繁瑣細節,可能會認為還需要 8個4 - 1 選擇器從4個儲存體中選擇正確的資料輸入訊號。但是,這並不需要。

         通常, T T L相容積體電路的輸出訊號或者大於 2 . 2伏(邏輯 1 )或者小於 0 . 4伏(邏輯 0)。如果試著把輸出訊號連線起來,會出現什麼情況呢?如果一個積體電路的輸出為 1 ,另一個輸出為 0,把這兩個輸出連線到一起後,結果會是什麼呢?你是無法回答的。那麼為什麼積體電路的輸出訊號不能連線在一起呢?

         2 1 0 2晶片的資料輸出訊號是三態輸出 。除了邏輯 0和邏輯 1 外,資料輸出訊號還可以是第三種狀態,這種狀態就是什麼都不是,就好像晶片的引腳什麼都沒有連線。當-C S 輸入為 1 的時候, 2 1 0 2晶片就進入第三種狀態,這意味著可以把 4個儲存體對應的資料輸出訊號連線到一起,並用這 8個組合輸出作為匯流排的 8個數據輸入訊號。

        需要強調一下三態輸出的概念,因為它對匯流排的操作至關重要。連到總線上的所有晶片都可以使用總線上的資料輸入訊號向處理器傳送資料。任何時候,連到總線上的眾多電路板中只有一個用來確定總線上的資料輸入訊號是什麼。其他電路板不被選中,輸出為第三態。

       2 1 0 2晶片是一個靜態隨機訪問儲存晶片,即 S R A M ,與動態 R A M( D R A M )不同。S R A M每儲存1位需要 4個電晶體(與第 1 6章講到的用觸發器作儲存器所需要的電晶體數不完全相同) ,而D R A M每位只需要一個電晶體。 D R A M的缺點是它的外圍支援電路較複雜。

       只要晶片有電, S R A M晶片如 2 1 0 2就會保持已儲存的內容;如果斷電,則內容會丟失。在這方面, D R A M也是如此。但 D R A M還需要週期性地對儲存器進行訪問,即使這些內容是不需要的。這稱之為重新整理, 1 秒鐘內含有好幾百次重新整理,就好像隔一段時間就推一下某個人使他不要入睡一樣。

        拋開在使用 D R A M上的爭論,過去幾年 DRAM 晶片容量的不斷增長使得 D R A M得到廣泛的應用。 1 9 7 5 年, I n t e l公司首創了 D R A M晶片,它可以儲存 16 384 位。與摩爾法則一致,D R A M晶片的容量基本上是每三年增長 4倍。現在的計算機通常在系統板上有儲存器槽,可以插上若干個 D R A M晶片組成稱為單行直插儲存體( S I M M)或雙行直插儲存體( D I M M)的小電路板。現在 1 2 8 M B的D I M M售價在 $ 300 以下。

        即然已經知道了如何組織儲存器,因此可不必把微處理器的儲存空間都分配給儲存器,可以留一部分儲存空間給輸出裝置。

        陰極射線管( C RT) —外觀上有些像在家裡看到的電視機—已成為計算機最普通的輸出裝置。連到計算機上的 C RT通常稱為視訊顯示器或監視器,提供訊號給顯示器的電子部件稱為視訊介面卡。視訊介面卡是計算機中的一塊電路板,通常稱為視訊卡。

        雖然視訊顯示器或電視機的二維影象看起來似乎很複雜,但它實際上是由一束連續的射線很快掃過螢幕而形成的。射線從左上角開始,從左到右掃過螢幕,然後很快回到左邊,開始第 2行。每個水平行稱為掃描行,每次回到下一行的開始稱為 水平回掃 。當射線掃描完最後一行後,就從螢幕右下角回到左上角( 垂直回掃 ),並不斷重複這一過程。以美國的電視訊號為例,這種掃描每秒進行 6 0次,稱之為場頻 。由於掃描速度很快,影象在螢幕不會出現閃爍。

        由於採用隔行掃描,電視的情況有點兒複雜。兩個場需要用來形成一個單獨的幀,幀是一個完整的靜態視訊影象。每個場完成整個幀的一半掃描線— 第一個場完成偶數掃描線,第二個場完成奇數掃描線。 水平掃描頻率 ,即掃描每個水平行的頻率,為 15 750 赫茲。把它除以 6 0赫茲,為 2 6 2 . 5行,這就是一個場的掃描線數。整個幀是它的兩倍,即 5 2 5條掃描線。

        不考慮隔行掃描技術的細節,生成視訊影象的連續射線由一個連續訊號來控制的。儘管電視節目在進行廣播或通過有線電視系統傳送的時候是音訊和視訊的混和,但最終還是分開的。這裡講到的視訊訊號與從 V C R、攝像機和電視機的視訊插口上輸入 /輸出的訊號是一致的。

        對黑白電視來說,視訊訊號很簡單也容易理解(彩色電視則要麻煩一些)。每秒 6 0次場掃描,同時掃描訊號中包含有用來標明一個場開始的 垂直同步脈衝 ,脈衝電壓為 0伏(地) ,寬度為 4 0 0毫秒。 水平同步脈衝用來標明每個掃描行的開始,它的訊號為 0伏,寬度為 5毫秒,每秒出現 15 750次。在兩次水平同步脈衝之間,訊號從 0 . 5伏(黑)~ 2伏(白)變化, 0 . 5伏~ 2伏之間的電壓用來表示灰度。

        因而電檢視像部分是數字的,部分是模擬的。影象在垂直方向上分成 5 2 5行,但每一個掃描線的電壓是連續變化的—用來模擬影象的可視強度。但是電壓並不是無限制地變化,電視機能響應的訊號變化頻率有上限,稱為電視機頻寬 。

        頻寬是通訊中很重要的概念,它關係到某個傳輸媒體上能夠傳輸的資訊量。在電視機中,頻寬限制了視訊訊號變化的速率。美國的廣播電視頻寬為 4 . 2 M H z。

        如果把視訊顯示器連線到計算機,則很難把顯示器想像成是模擬和數字混合的裝置,它很容易看成是一個地地道道的數字裝置。從計算機的觀點來看,視訊影象很容易想像成是由離散的點組成的矩形網格,這些離散的點稱之為畫素。

        視訊頻寬限制了水平掃描行上畫素的個數。我們定義頻寬為視訊訊號變化 (從黑到白,再從白到黑 )的速率。具有 4 . 2 M H z頻寬的電視機允許每秒 4 2 0萬次2個畫素或者—用水平掃描頻率15 750去除 2× 4 200 000—每個水平掃描行 5 3 3個畫素。但是大約 1 / 3 的畫素是不可用的,因為它們被隱藏了 — 或者在影象的遠端或者在射線水平回掃中。水平掃描行上剩下大約有3 2 0個畫素是有用的。

         同樣,在垂直方向上也不是 5 2 5個畫素都有用。實際上,在螢幕的上、下部和在垂直回掃過程中都會有損失。計算機在用電視機顯示時不採用隔行掃描,垂直方向上的畫素數目是2 0 0。

        因此,最初連到普通電視機上的視訊介面卡的解析度為 3 2 0× 2 0 0,即水平方向3 2 0個畫素,垂直方向 2 0 0個畫素:

      為了確定網格上畫素總數,可以去統計也可以簡單地用 3 2 0× 2 0 0得到 64 000 個畫素。根據視訊介面卡的配置(下面將會做簡要的解釋) ,每個畫素可以是黑或白的,也可以為某一特定的顏色。

      如果需要顯示一些字元,能顯示多少個呢?

      這顯然依賴於每個字元的畫素數目。下圖是一種可能的方法,每個字元使用 8 × 8 網格( 6 4畫素) :

       這是A S C I I碼2 0 h~7 F h對應的字元。 (不可顯示的字元對應的 A S C I I碼從0 0 h~1 F h。 )

       每個字元由 7位A S C I I碼來標識,而每個字元的顯示情況由相對應的 6 4位來確定。可以把這6 4位資訊看成程式碼。

       使用這種字元定義,可以在 3 2 0× 2 0 0視訊顯示器中顯示 2 5行,每行 4 0個字元。這足以顯示Amy Lowell完整的一首短詩:


         視訊介面卡需要一些 R A M來儲存所顯示的資訊,微處理器可以向這個 R A M寫入資訊用來改變螢幕顯示的資訊。更為方便的是,這個 R A M可以是微處理器儲存空間的一部分。上面講到的顯示介面卡需要多少 R A M呢?

         這並不是一個簡單的問題,結果可能的範圍是從 1 K B~1 9 2 K B。

        從最低估計開始,減少視訊介面卡所需儲存器的方法之一就是限制介面卡只顯示字元。我們已知一屏可以顯示 2 5行,每行 4 0個字元,即總共 1 0 0 0個字元。這樣視訊介面卡上的 R A M只需儲存這 1 0 0 0個字元的 7位A S C I I碼。這1 0 0 0個7位值大約是 1 0 2 4位元組即 1 K B。

        視訊介面卡還需要有包含所有 A S C I I碼字元點陣的字元生成器,這些字元生成器通常是隻讀儲存器,即 R O M。 R O M是一種積體電路,特定的地址下得到特定的資料輸出。不像 R A M,R O M沒有資料輸入訊號。

        也可把 R O M看成是把一種程式碼轉換成另一種程式碼的轉換電路。儲存 1 2 8個A S C I I碼字元的8× 8點陣的 R O M需要 7個地址訊號(代表 A S C I I碼)和 6 4個數據輸出訊號。這樣, R O M就把7位A S C I I碼轉換成可確定字元顯示結果的 6 4位程式碼。然而 6 4位的輸出訊號會使得晶片過大!如果有 1 0個地址訊號、 8個輸出訊號就會變得很方便,其中 7位地址訊號確定某一 A S C I I碼字元(這 7位地址訊號來自於視訊介面卡的資料輸出) ,其餘 3 個地址訊號用來標識字元中的一行。如:地址 0 0 0標識最高行; 111標識最低行。 8位輸出是每一行的 8個畫素 。

       例如,假設 A S C I I碼為4 1 h。這是大寫字母 A,且有 8行,每行 8位。下表顯示了字元 A的1 0位地址(空格分開了 A S C I I碼和行程式碼)和資料輸出訊號:

        從中你是否看見了以 0構成的背景上顯示 1 來畫出的 A?

        顯示字元的視訊顯示介面卡必須還要有一個游標邏輯電路。游標是一個小下劃線用來表明鍵盤中輸入的下一個字元將要顯示的位置。游標字元的行,列位置值通常存在視訊卡的兩個8位暫存器中,微處理器可向其中寫入資料。

        如果顯示介面卡並非只限於顯示文字,則稱為 影象介面卡 。微處理器通過寫入資訊到影象視訊卡上的 R A M而在螢幕上顯示影象,其中包括各種大小和模式的字元。影象視訊卡比僅顯示字元的視訊卡所需的儲存器容量要大。顯示 3 2 0× 2 0 0畫素的影象視訊卡有 64 000個畫素。如果一個畫素對應於 1 位R A M,則該視訊卡需要 64 000 位R A M,即 8 0 0 0位元組。但是,這是最低的要求。 1 位對應於 1 個畫素只能表示兩種顏色— 如,黑和白。 0可能對應於黑色畫素, 1可能對應於白色畫素。當然,黑白電視機顯示的不僅僅是黑、白兩種顏色,還可以顯示出不同的灰度。為了在影象視訊卡上顯示灰度,通常一個畫素對應於一個位元組的 R A M。 00h 對應於黑色, F F h對應於白色,中間的資料對應於不同的灰度。顯示 2 5 6種不同灰度的 3 2 0× 2 0 0視訊卡需要 64 000位元組的 R A M,與一直在講的 8位微處理器的整個地址空間非常接近。

        如果要達到很好的色彩效果,則每個畫素需要 3 個位元組。仔細觀察彩色電視機或計算機的視訊顯示器,可以看到每種顏色是三原色,即紅、綠和藍的不同混合。為了獲得各種顏色,需要一個位元組來標明三原色每種顏色的強度。這樣需要 192 000位元組的 R A M。 (本書最後一章將會講到更多有關彩色圖形的內容。 )

       視訊介面卡能夠顯示的顏色的多少與每個畫素所用的位數有關。這種關係與本書中講到的許多編碼很相似,也牽涉到 2的冪:

        
        3 2 0× 2 0 0解析度是標準電視機所能達到的最大解析度,正因為如此,為計算機特製的顯示器比電視機具有更高的頻寬。 1 9 8 1 年IBM PC所用的顯示器可以顯示 2 5行,每行 8 0個字元,這是 I B M巨大且昂貴的大型機的 C RT顯示器上的字元數目。對 I B M來說, 8 0是一個很特殊的數字,因為它正好是 I B M穿孔卡片上的字元數。的確,早期連到主機上的 C RT顯示器主要用
來顯示穿孔卡片的內容。偶爾你會聽到一種過時的叫法,把僅顯示字元的視訊顯示器的所有行稱為卡片。

         多年來,視訊顯示介面卡的解析度及顯示的顏色不斷增加。一個重要的里程碑是 1 9 8 7年IBM PS/2個人計算機系列和蘋果公司的 Macintosh II都採用了水平 6 4 0畫素,垂直 4 8 0畫素的視訊介面卡。這是從那時起就已保持的最低標準的視訊解析度了。

         6 4 0× 4 8 0解析度是一個具有重要意義的里程碑。也許你不會相信,它之所以重要的原因還要追溯到托爾斯·愛迪生!大約在 1 8 8 9年,當愛迪生和工程師 William Kennedy LaurieD i c k s o n研究電影攝影機和電影放影機的時候,他們決定使電影畫面的寬比高要多出 1 / 3。寬和高的比例稱為長寬比。 E d i s o n和D i c k s o n確定的這個比例通常表示為 1 . 3 3∶ 1 或4∶ 3;在6 0多年的時間裡,這個長寬比為許多電影所採用,並且電視上也採用了這個長寬比。直到 1 9 5 0年的早期,好萊塢引入寬銀幕技術來與電視競爭才打破了 4∶ 3的長寬比。

         像電視一樣,許多計算機監視器的長寬比也是 4∶ 3 ,這很容易用尺子測量一下來驗證。6 4 0× 4 8 0解析度的比例也是 4∶ 3 ,這意味著水平方向上 1 0 0個畫素的物理長度與垂直方向上1 0 0個畫素的物理長度是一樣的。這是計算機影象的重要特徵,稱之為正方形畫素 。

         現在的視訊介面卡和監視器都能實現 6 4 0× 4 8 0的解析度,但也存在其他各種各樣的顯示模式,常見的解析度有 8 0 0× 6 0 0, 1 0 2 4× 7 6 8, 1 2 8 0× 9 6 0和1 6 0 0× 1 2 0 0。

         儘管總有人認為計算機顯示器和鍵盤是按照同樣的方式連到計算機上的—敲入什麼就在螢幕上顯示什麼—實際上,它們是不同的。

         鍵盤上的每一個鍵是一個簡單的開關,鍵按下則開關閉合。可能有類似於打字機的 4 8個鍵的鍵盤,現在個人計算機鍵盤通常有 1 0 0多個鍵。

         連到計算機上的鍵盤應該有硬體來為每一個按鍵提供唯一的程式碼,一種可能的方法是這個程式碼是該鍵對應的 A S C I I碼。但是,這種方法既不實用也不可取。例如, A這個鍵可以對應於A S C I I碼4 1 h或6 1 h,這取決於是否同時按下了 s h i f t鍵。此外,現在的計算機鍵盤有許多鍵並不對應於 A S C I I碼字元,鍵盤硬體產生的程式碼是一種稱之為掃描碼的程式碼。一個小的計算機程式可以計算出在鍵盤上按下的某一個鍵時所對應的 A S C I I碼(如果有的話)。

          為使鍵盤硬體的描述不至於太繁雜,假設鍵盤只有 1 6個鍵。無論什麼時候按下一鍵,鍵盤硬體會產生一個 4位程式碼,範圍是 0 0 0 0~1111。

          鍵盤硬體包括了前面講到的一些部件:

         圖的左下部是鍵盤的 1 6個鍵,用簡單的開關來表示。一個 4位計數器迅速地迴圈對應於 1 6個鍵的程式碼。迴圈所有的程式碼所需的時間必須比按下並鬆開一個鍵所需的時間要短。

        4位計數器的輸出作為 2 - 4譯碼器和 4 - 1 選擇器的輸入。如果沒有鍵按下,選擇器的輸入沒有一個為 1 ,則選擇器的輸出不為 1 。如果有一個鍵按下,則對某一特定的 4位計數器的輸出來說,選擇器的輸出為 1 。例如,如果從右上角開始的第二個鍵按下,並且如果計數器的輸出為0 11 0,則選擇器的輸出為 1 :

         
         那就是該鍵所對應的程式碼。當該鍵被按下,沒有其他計數器的輸出將會使選擇器輸出為 1 。每個鍵都有自己的程式碼。

         如果鍵盤有 6 4個鍵,則需要 6位掃描碼,也即需要 6位計數器。可以用 3 - 8譯碼器和 8 - 1 選擇器把鍵排成 8× 8陣列。如果鍵盤的鍵在 6 5~1 2 8個之間,則需要 7位程式碼。可以把鍵排成 8× 1 6陣列,採用 4 - 1 6譯碼器和 8 - 1 選擇器(也可用 3 - 8譯碼器和 1 6 - 1 選擇器) 。

          下面將發生什麼取決於鍵盤介面電路。鍵盤硬體可以為每一個鍵安排一個 1 位的 R A M,由計數器的輸出作為地址。如果鍵未按下,則 R A M內容為 0;按下則為 1 。可以由微處理器來讀取R A M的內容以確定每個鍵的狀況。

           鍵盤介面中另一個有用的部分是中斷訊號。前面講過, 8 0 8 0微處理器允許外設中斷 C P U的當前工作。微處理器響應中斷並從儲存器中讀入一條指令。這通常是一條 R S T指令,使微處理器轉去執行記憶體中另外一個區域中的中斷處理程式。

           本章最後介紹的外圍裝置是長期儲存裝置。前面講過,隨機訪問儲存器—不論是用繼電器、電子管還是電晶體構成的— 在當電源關閉時,內容會丟失。所以,一個完整的計算機也需要長期儲存器。長久以來使用的方法是在紙上或卡片上打孔,就像 I B M的穿孔卡片。在早期小型計算機中,是通過在滾動的紙帶上打孔來儲存程式和資料的這便於以後重新裝入到記憶體中。但是,穿孔卡片和紙帶存在一個問題,即介質不能重複使用,當打上一個孔後就不容易再恢復。另一個問題是效率低,就當時來說,如果想要真切的看到某一位元,可能要花費太多空間。

           所以,現在最流行的長期儲存器型別是磁介質儲存器。磁介質儲存器起源於 1 8 7 8年,當時美國工程師 Oberlin Smith(1840 —1 9 2 6 )描述了它的原理。第一個可用的裝置是在 2 0年後即1 8 9 8年,由丹麥的發明家 Valdemar Poulsen( 1 8 6 9—1 9 4 2)製造的。 P o u l s e n的電磁式錄音機起初打算用來記錄人不在家時收到的電話資訊。他用電磁鐵—電報機裡隨處可見的部件—和可變長度的金屬絲來記錄聲音。電磁鐵按照聲音的高低來磁化金屬絲。當磁化的金屬絲在通過電磁線圈的時候,根據磁化程度的不同會產生不同的電流。不管採用何種磁化介質,都是用電磁鐵來記錄和讀取資訊的。

            1 9 2 8年,澳大利亞發明家 Fritz Pfleumer發明了一種磁記錄裝置,該裝置是在很長的紙帶上採用最初用於生產香菸上金屬帶的技術覆蓋鐵粒子,並對它申請了專利。很快,一種強度更高的醋酸鹽纖維素代替了紙,從而導致更耐久和更知名的記錄介質的誕生。卷在軸上的磁帶—現在都很方便地包裝在塑料盒裡—仍然是用來記錄和回放音樂及視訊訊號的極通用的介質。

            用來記錄計算機數字資料的第一個商用磁帶系統由 Reming Rand 在1 9 5 0年發明。那時,1 / 2英寸的卷軸磁帶可以存放幾兆位元組的資料。早期家用計算機採用普通的盒式磁帶錄音機來儲存資訊。一些小程式用來儲存記憶體塊的內容到磁帶並以後再從磁帶讀到記憶體。最早的 I B MP C有一個連線盒式磁帶儲存器的接頭。今天,磁帶仍然是很普遍的介質,特別是對那些要長期儲存的文件。然而,磁帶並不是理想的介質,因為不能很快地移動到磁帶上的任一點進行訪問,頻繁的前進和倒回要花費很多時間。

            從幾何觀點上看,能夠進行快速訪問的介質是磁碟。磁碟圍繞中心旋轉,連到臂上的一個或多個磁頭從磁碟外邊向中間移動。磁碟上的任何區域都能夠被快速訪問。

            在記錄聲音資訊這一方面,磁碟確實比磁帶產生得要早一些。而用來儲存計算機資料的第一個磁碟驅動器是由 I B M在 1 9 5 6 年發明的,此 R A M A C ( random access method of  accounting and control)由 5 0個碟片組成,直徑 2英尺,可以存放 5 M位元組資料。

            從那時起,磁碟越來越小而容量越來越大。磁碟通常分為軟盤和硬碟。軟盤是由覆蓋磁性物質的塑料片組成,外面是起保護作用的厚紙板或塑料包裝(現在常用) 。 (塑料包裝保護磁碟不被彎折,因而雖然現在的磁碟與以前的軟盤已經有很大區別,但仍然習慣稱之為軟盤。 )軟盤必須插入軟盤驅動器,這是連線到計算機上的一個部件,用來向軟盤寫或從軟盤讀取資訊。早期的軟盤直徑為 8英寸。早期的 IBM PC用 5 . 2 5英寸的軟盤,現在常用的是直徑 3 . 5英寸的軟盤。軟盤可以從軟盤驅動器中取出來,用來在計算機之間傳遞資料。磁碟現在仍然是商用軟體中一個重要的分發媒體。

             硬碟通常由多個金屬磁碟組成,永久性地做在驅動器裡。硬碟通常比軟盤速度快,並可儲存更多的資料。但是,硬碟中的磁碟自身不能移動。

            磁碟的表面分成很多同心圓,稱為磁軌,每個磁軌又分成像圓餅切片一樣的扇區,每一個扇區存放一定數量的位元組,通常為 5 1 2位元組。最早 IBM PC 上用的軟盤只有一面,分成 4 0個磁軌,每個磁軌 8個扇區,每個扇區可儲存 5 1 2位元組。這樣,每一個軟盤可存放 163 840個位元組,即 160KB 。今天, P C相容機常用的 3 . 5英寸軟盤有兩面,每面 8 0個磁軌,每個磁軌 1 8個扇區,每個扇區可存放 5 1 2位元組,這樣總共可存放 1 474 560位元組,即 1 4 4 0 K B。最早的硬碟驅動器由IBM PC/XT 在1 9 8 3 年使用,可存放 1 0 M B的內容。 1 9 9 9年, 2 0吉位元組的硬碟驅動器(可存放2 0 0億位元組)售價都只在 $ 400 以下。

            軟盤和硬碟通常與它們的電氣介面一起工作,它們與微處理器之間也需要另外的介面。硬碟驅動器常用的標準介面包括 S C S I( small computer system interface,小型計算機系統介面)、E S D I( enhanced small device interface, 增強的小型裝置介面)和 I D E( integrated device  e l e c t r o n i c s ,整合裝置電氣介面),所有這些介面均使用 D M A(直接記憶體訪問)來接管匯流排和在隨機訪問儲存器和硬碟之間直接傳送資料,且不需經過微處理器。每次傳輸的數量是磁碟扇區位元組數(通常是 5 1 2位元組)的倍數。

            許多家用計算機的初學者總聽到關於兆位元組和吉位元組的技術談論,這使得他們對半導體隨機訪問儲存器與磁碟儲存器有什麼不同感到很困惑。近幾年出現的分類規則也減少了人們對術語的困惑。

            隨機訪問儲存器與磁介質儲存器之間的主要區別是:隨機訪問儲存器是易失性的,而軟盤或硬碟上的資料會一直保留,除非故意刪除或寫覆蓋。此外,還有一個顯著的不同只有在理解微處理器如何工作之後才能理解:當微處理器輸出一個地址訊號後,通常是定址隨機訪問儲存器,而不是磁介質儲存器。

            從磁碟取出資料到記憶體供微處理器訪問需要額外的步驟,即需要微處理器執行一段小程式去訪問磁碟驅動器,使磁碟驅動器把資料傳輸到記憶體。

            隨機訪問儲存器與磁介質儲存器之間的差別有一個比喻:隨機訪問儲存器就像桌面上的東西,可以直接拿來使用;磁介質儲存器就像一個檔案櫃,如果要用檔案櫃裡的東西,需要站起來,走到檔案櫃前,找到需要的檔案,並帶回到桌面上。如果桌面上太擁擠,還需要把桌上的一些東西拿回到檔案櫃中去。

            這個比喻很恰當,因為存在磁碟上的資料確實是以所謂的“檔案”來存放的。存放檔案、提取檔案是作業系統這個很重要軟體的職權範圍。