基本概念
在過去幾年裡,關於微處理機的大量報導和數以百計的微處理機的湧現,為設計者們進行有效設計提供了豐富的資料。這些產品的製造家提供了有關產品的詳細文獻。但不足的是,迄今還缺乏對微處理機全貌及其發展情況、趨向的論述。現有的資料多為以大量的圖表方式列出微處理機各種參數,諸如速度、指令數、定址方式、暫存器組等。
早期的微處理機(TPU)是一種“半智慧型”單元,其程式靠CPU來編寫。微處理器(又稱為CPU或中央處理單元)是裝配在單顆晶片上的一個完整的計算引擎。第一顆微處理器是1971年問世的Intel 4004。
早期微處理機介紹
在TPU發展過程中,關鍵的一步是可程式序問題。早期的TPU是一種“半智慧型”單元,其程式靠CPU來編寫。比如用英特爾8257 DMA控制器。雖然一般情況下TPU是在CPU控制之下工作的,但其自身的發展逐漸引起了一種演變,使得通用TPU和通用CPU之間的區別被抹掉了。隨著引進英特爾8748/8048單片微處理機和8041/8741 TPU,這種區別就幾乎消失了。
8748是一個只用一種5V電源的單微處理機,主要由以下幾部分構成:
(1)CPU—8位,70條指令,21種條件轉移
(2)P/ROM—1 K x 8程式存儲器,帶有4K直接地址
(3)RAM—64 x 8隨機存儲器,包括8級程式計數器(PC)堆疊(可用來做數據存儲)。8對暫存器單元可做工作區和為向外擴展為256x8的直接定址頁號
(4)時鐘—RC或晶體控制
(5)電源離合—提供時序電容的需要
(6)I/O線—27條和TTL相容
(7)控制線—5條,提供給yo和存儲器
(8)中斷—外部的:到單元3的向量,間隔時間計數器,為溢出而設的到單元7的向量
(9)邏輯“與”及“或”—直接連向I/O接口及在測試線上的條件轉移
8048是單5V微處理機,周期2.5微秒,可進行2進制及2~10進制算術運算。8728有一個可使用紫外線擦掉的P/ROM,一塊基片上裝有1k個單元。用它做8048的唯讀存儲器(ROW)。
第一代微處理機的特點是低速P-MOS技術,在晶片上解碼部份極少,結構簡單。英特爾8008就是一台典型的第一代8位微處理機。自從出現了第一台英特爾8080,N-MOS以後,它實現了在晶片上的解碼和一套相應的指令系統,就清晰地畫出了從第一代發展到第二代微處理機的界限。但是,由於以功能來劃分類別的多樣化使得區分第二代與第三代微處理機就比較困難了。
如果撇開雙極(TTL)可編微程式系統不談,而只考慮單片微處理機時,那么第二代—第三代的劃分就集中在多處理器的協調上,諸如National SC/MP和帶有P/ROM的英特爾8048,具有存儲器一存儲器結構的TI 9900,和功能集中的Mostek 3870單片微處理機。
隨著大面積封裝密度的增加,在CPU里包含專用的TPU子系統的做法更為現實了。在CPU晶片上裝有電可改寫的ROM將加速取數時間,並去掉了CPU和存儲器之間的信息、通道,相形之下,比用連線方式來使用I/O要方便得多。進一步發展模擬一數字和數字一模擬技術將提供一種可以模擬I/O一些明顯功能的設備。正如早先講到的那樣,經濟因素預示著帶有P/ROM的超一聯結式的通用基片的發展可以提供一種在部分場所中使用的結構形式。速度的提高使得NWOS技術已超過了TTL而且其發展的極限還未達到。許多新技術的出現為微處理機的基礎系統設計提供了廣闊的前景 。
結構
微處理器基本結構如圖:
這是一個進行了最大程度簡化的微處理器。此微處理器具有:
(1)一條地址匯流排(匯流排寬度可以8位、16位或32位),用於向記憶體傳送一個地址;
(2)一條數據匯流排(匯流排寬度可以是8位、16位或32位),能夠將數據傳送到記憶體或從記憶體取得數據;
(3)一條RD(讀)和WR(寫)線路,告訴記憶體它是希望寫入某個地址位置還是獲得某個地址位置的內容;
(4)一條時鐘線路,將時鐘脈衝序列傳送到處理器;
(5)復位線路,用於將程式計數器重置為零(或者其他內容)並重新開始執行。
微處理器執行一組機器指令,這組指令可向處理器告知應執行哪些操作。微處理器就會根據指令執行三種基本工作:
(1)通過使用ALU(算術/邏輯單元),微處理器可以執行數學計算。例如:加法、減法、乘法和除法。現代的微處理器包含完整的浮點處理器,它可以對很大的浮點數執行非常複雜的浮點運算。
(2)微處理器可以將數據從一個記憶體位置移動到另一個位置。
(3)微處理器可以做出決定,並根據這些決定跳轉到一組新指令。
微處理器能夠執行許多非常複雜的工作,但是所有工作都屬於這三種基本操作的範疇。
微處理器指令
雖然上面的微處理器非常簡單,但是它仍然可以執行相當多的指令。指令集通過位模式的方式實現,每一個位模式在載入到指令暫存器中後都有不同的含義。由於人們不能很好記住這些位模式,所以定義了一些簡短的單詞來表示不同的位模式。這些單詞的集合稱作處理器的彙編語言。彙編程式可以將這些單詞輕鬆翻譯成它們的位模式,然後會將彙編程式的輸出放在記憶體中供處理器執行。
例如以下彙編語言指令:
發展
可用電晶體的數量對處理器性能有巨大影響。在8088這樣的處理器中,通常要花費15個時鐘周期才能執行一條指令。由於乘法器的設計方式,在 8088上進行16位的乘法運算大約需要80個時鐘周期。而電晶體越多,就越有可能在一個周期中執行更多的乘法運算。
電晶體數量的增多還使我們能夠使用一種稱為流水線的技術。在流水線式的體系結構中,指令的執行過程是相互重疊的。所以,雖然需要花費5個時鐘周期來執行每條指令,但是可以同時執行5條指令的各個階段。這樣,表面看起來在每個時鐘周期內即可執行完一條指令。 許多現代的處理器具有多個指令解碼器,每一個都有自己的流水線。這樣便存在多個指令流,也就是說每個時鐘周期可以完成多條指令。但是這種技術實現起來非常複雜,因此需要使用大量的電晶體。
處理器設計的發展趨勢主要是:完全32位的ALU(內置快速浮點處理器)和多指令流的流水線式執行方式。處理器設計的最新進展是64位ALU,預計在下一個十年中家用PC就會用上這種處理器。此外,還存在為處理器添加可高效執行某些操作的特殊指令(例如MMX指令)的趨勢,以及在處理器晶片中增加硬體虛擬記憶體支持和L1快取的趨勢。所有這些趨勢都進一步增加了電晶體的數量,導致現在的處理器包含數千萬個電晶體。而這些處理器每秒大約可以執行十億條指令。