跳轉至內容

微處理器設計/線繞

來自華夏公益教科書

從歷史上看,大多數早期的 CPU 都是透過將積體電路 (IC) 連線到電路板並進行佈線來構建的。

如今,在 FPGA 中設計和實現新的 CPU 要快得多——結果可能會比分散在多個 IC 上的任何東西執行得更快,功耗也更低。

但是,有些人仍然以傳統的方式設計和構建 CPU。這種 CPU 有時被稱為“自制 CPU”或“自制 CPU”。

有些人認為,以這種方式物理構建 CPU,因為它允許學生探究 CPU 的內部工作原理,可以幫助他們“接觸魔法”[1],幫助他們學習和理解底層的電子裝置和硬體。

自制計算機的一個例子,點選檢視放大版本

自制 CPU 是一個使用許多簡單的積體電路構建的中央處理器,通常來自 7400 系列。在規劃這種 CPU 時,設計人員不僅要考慮裝置的硬體,還要考慮 CPU 將要執行的指令、它們將如何執行、每個指令的位模式及其助記符。在基於計算機的電路模擬出現之前,許多商業處理器(來自摩托羅拉等製造商)都是首先使用分立邏輯構建和測試的。這些商業處理器包括摩托羅拉 6800[2]、摩托羅拉 6809[3]、32 位摩托羅拉 68030[4] 和 32 位惠普 PA-RISC TS1[5]

雖然在構建這種 CPU 時,資料匯流排大小沒有限制,但隨著匯流排寬度變寬,完成設計的元件數量呈指數級增長。常見的資料匯流排物理尺寸為 1 位、4 位、8 位和 16 位。 40 位 CPU 的不完整設計文件存在。[6] 微程式 CPU 能夠嚮應用程式程式設計師提供與用於實現它的硬體直接支援的指令集明顯不同的指令集。例如,68000 嚮應用程式程式設計師提供了一個 32 位指令集——一個 32 位“加法”是一個單獨的指令——即使在內部它是使用 16 位 ALU 實現的。例如,Zilog Z80 是有史以來最常用的 CPU 家族之一[7],嚮應用程式程式設計師提供了一個 8 位指令集——即使在內部它是使用單個 4 位 ALU 實現的[8]

例如,w:序列計算機,即使它們每次時鐘週期只計算一位,也會提供一個處理更寬字的指令集——通常是 12 位(PDP-8/S;PDP-14)、24 位(D-17B),甚至更寬——39 位(Elliott 803)。


著名的自制 CPU

Magic-1 是一個具有 8 位資料匯流排和 16 位地址匯流排的 CPU,執行速度約為 3.75MHz 4.09 MHz。 [4]

Mark I FORTH 也有一個 8 位資料匯流排和 16 位地址匯流排,但執行速度為 1MHz。[9]

V1648CPU 是一個具有 16 位資料匯流排和 48 位地址匯流排的 CPU,目前正在設計中。 [5]

APOLLO181 是一款自制的 4 位教學處理器,由 TTL 邏輯和雙極性儲存器組成,基於 Bugbook® I 和 II 晶片,特別是基於 74181(由 Gianluca.G 製造,義大利,2012 年 5 月)。 [6]

([待定:命名為?)] 是一個由許多麻省理工學院的學生使用“MAYBE”實驗室套件重新實現的 8 位 TTL CPU。[10]

“Beta”顯然是一個由許多麻省理工學院的學生重新實現的 32 位 CPU。 他們至少以 3 種不同的方式實現它

  • 在 8 位 CPU ([待定:命名為?)] 上執行的模擬,該 CPU 由簡單的積體電路構建[10][11]
  • 一個直接由大量簡單積體電路構建的 32 位 CPU[11]
  • 一個在其他 CPU 晶片上使用軟體模擬的 32 位 CPU。

2005 年,十八名高中生重新實現並構建了他們自己的“CHUMP”(“廉價自制易懂最小處理器”)版本,這是一個具有 4 位資料路徑的 CPU。[10]

...

匯流排

[編輯 | 編輯原始碼]

實際上所有 CPU 設計都包括幾個三態匯流排——一個“地址匯流排”、一個“資料匯流排”以及各種內部匯流排。

三態匯流排在功能上與多路複用器相同。但是,在三態匯流排中,沒有你可以指向並說“那就是多路複用器”的物理部分;這是一種由許多部分共享的活動模式。使用三態匯流排的唯一原因是當它與等效的多路複用器排列相比,需要更少的晶片或更少、更短的線時。當您想選擇非常少量的緊密相鄰的資料,並且大多數資料儲存在僅具有 2 態輸出的晶片上時,使用實際的多路複用器晶片可能需要更少的晶片和更少的佈線。當您想選擇許多資料(許多暫存器中的一個,或許多儲存晶片中的一個等),或者儲存這些資料的許多晶片已經具有三態輸出時,使用三態匯流排通常需要更少的晶片(即使計算在匯流排和每個沒有三態輸出的部件之間“額外”的三態緩衝器)。

連線到 TTL CPU 上的三態 16 位匯流排的典型暫存器檔案包括

  • 八路 2 態輸出暫存器(如 74x273),每個 16 位暫存器 2 個晶片
  • 八路三態非反相緩衝器(如 74x241),每個 16 位暫存器每個匯流排 2 個晶片
  • 一個具有 N 個輸入(由微程式驅動)和 2^N 個輸出線的解多路複用器,選擇最多 2^N 個可能驅動匯流排的部件中的一個的三態緩衝器,每個匯流排 1 個晶片。

稍後我們將討論可能需要更少晶片的快捷方式。

像許多歷史上重要的商用計算機一樣,許多自制 CPU 使用 74181 的某種版本,這是第一個單晶片完整 ALU。[12] (74181 的版本包括 74F181、40181[citation needed]、74AS181、72LS181、74HCT181 等)。74181 是一款 4 位寬的 ALU,可以執行所有傳統的加/減/減操作,帶或不帶進位,以及 AND/NAND、OR/NOR、XOR 和移位。

典型的自制 CPU 使用 4 個這樣的 74181 晶片來構建一個 ALU,該 ALU 可以一次處理 16 位資料,例如 Data General SuperNova。[13] 最簡單的自制 CPU 只有一個 ALU,它在不同的時間用於遞增程式計數器、對資料進行算術運算、對資料進行邏輯運算以及根據基址+偏移量計算地址。

一些構建 TTL CPU 的人試圖透過構建一個小於最大字長(在 TTL 計算機中通常為 16 位)的 ALU 來“節省晶片”。例如,最早的 Data General Nova 計算機使用一個 74181 晶片,並以 4 位為單位處理所有資料。[13] 不幸的是,這會增加其他地方的複雜性,並且實際上可能會增加所需的晶片總數。[14][15][16]

最簡單的 16 位 TTL ALU 將每個 74181 晶片的進位輸出連線到下一個晶片的進位輸入,形成一個行波進位加法器。

歷史上,超前進位發生器 74182 的某個版本被用來加速“加”和“減”操作,使其與其他 ALU 操作的速度大致相同。

歷史上,一些構建 TTL CPU 的人會在單個 CPU 中放置兩個或多個獨立的 ALU 模組——一個用於資料計算的通用 ALU、一個 PC 遞增器、一個索引暫存器遞增器/遞減器、一個基址+偏移量地址加法器等。

我們將在 Microprocessor Design/Add and Subtract Blocks 中討論行波進位加法器、超前進位發生器及其對 CPU 其他部分的影響。

74181 的替代品

[edit | edit source]

有些人發現 '181 晶片越來越難找。

相當多的人在構建“TTL CPU”時使用 GAL 晶片(可以擦除和重新程式設計)。[17] 一個 GAL20V8 晶片可以替換一個 74181 晶片。[18] 通常,另一個 GAL 晶片可以替換 2 或 3 個其他 TTL 晶片。

其他構建“TTL CPU”的人發現,完全用離散的不可程式設計晶片構建一個可程式設計機器更有魔力。是否有任何合理的替代品可以用來構建由離散晶片組成的 ALU?Magic-1 使用 74F381 和 74F382 ALU;[19] '381 和 '382 晶片是否有任何變體比 '181 更容易找到?... 74HC283、74HCT283、MC14008 晶片只能加;它們不會做 AND、NAND 等...

許多商用機器,例如 Data General Nova 4,使用四個 AM2901 ALU“並行”來構建每個 16 位 ALU。遺憾的是,這些晶片似乎比 74181 更難找。

可以利用足夠數量的 74153 多路複用器構建整個 CPU(包括 ALU)。[20]

一位設計師“從頭開始”構建了一個 4 位 ALU,可以進行加、減、遞增、遞減、“與”、“或”、“異或”等運算——大致相當於 4 位 74181——大約使用 14 個簡單的 TTL 晶片:2 輸入 XOR、AND、OR 門。[21]

另一位設計師釋出了一個 8 位 ALU 設計,其功能比兩個 74181 晶片更多——74181 無法右移——由 14 個複雜的 TTL 晶片構建而成:兩個 74283 4 位加法器,一些 4:1 多路複用器和一些 2:1 多路複用器。[22]

LM3000 CPU 的設計師證明了 74181 的許多功能實際上是多餘的。LM3000 中的 8 位“ALU”實際上無法進行任何邏輯運算,只能進行“加”和“減”運算,由兩個 74LS283 4 位加法器和其他幾個晶片構建而成。顯然,那些“邏輯”運算並不真正必要。[23]

MC14500B 工業控制單元的功能甚至比 LM3000 CPU 還少。可以說,MC14500B 的功能接近於被認為是“CPU”的最低限度。[24][25] MC14500B 也許是最著名的“1 位”CPU。[26][27][28][29] [30]

所有最早的計算機以及大多數早期的海量並行處理機都使用序列 ALU,使其成為“1 位 CPU”。[31]

其他部分

[edit | edit source]

無焊接面包板方法

[edit | edit source]

無焊接面包板也許是構建涉及大量更改的實驗原型最快的方法。

大約十年來,每位在麻省理工學院學習 6.004 課程的學生都是團隊中的一員——每個團隊有一個學期的時間來設計和構建一個簡單的 8 位 CPU,使用 7400 系列積體電路。[32] 這些 CPU 由插在幾個無焊接面包板上的 TTL 晶片組成,這些麵包板透過許多 22 AWG(0.33 mm2)實心銅線連線。[33]

繞線

[edit | edit source]

傳統上,由 TTL 晶片構建的微型計算機是用大量的繞線插座(帶有長方形的方形引腳)插入穿孔板和大量的繞線線來構建的,這些插座和繞線線是用“繞線筆”或“繞線槍”組裝起來的。

帶狀板

[edit | edit source]

最近,一些“復古計算機”製造商一直在使用插入帶狀板的標準插座和大量的繞線線,這些插座和繞線線是用焊錫和烙鐵組裝起來的。[34]

工具

[edit | edit source]

Logisim 是一款免費的邏輯模擬器,允許使用圖形使用者介面設計和模擬數位電路。

設計技巧

[edit | edit source]

有很多方法可以對 CPU 進行分類。每種“分類方法”都代表著一個設計問題,而該方法的各種類別則代表著在完成 CPU 實現之前需要決定的各種可能的答案。

對 CPU 進行分類的一種方法對實現有很大影響,即:“在獲取下一條指令之前,我將保持一條指令多少個儲存週期?”

  • 0:每個儲存週期載入指令(哈佛結構)
  • 1:每個載入指令儲存週期之間最多 1 個儲存週期(載入儲存結構)
  • 更多:一些指令在載入指令記憶體週期之間有 2 個或多個記憶體週期(記憶體-記憶體架構)。

另一種對 CPU 進行分類的方法是:“我的控制線將由靈活的微程式控制,固定的控制儲存器控制,還是由直接對指令進行解碼的硬連線控制解碼器控制?”

載入儲存和記憶體-記憶體架構需要一個“指令暫存器”(IR)。在每個指令結束時(以及從復位狀態出來之後),下一個指令從記憶體 [PC] 中取出並存儲到指令暫存器中,從那時起,指令暫存器中的資訊(直接或間接)控制著 CPU 中發生的所有操作,直到下一個指令儲存到指令暫存器中。

對於自制 CPU,最流行的兩種架構是[需要引用]

  • 直接解碼哈佛架構
  • 支援記憶體-記憶體架構的靈活微程式。

另一種對 CPU 進行分類的方法是:“一個完整的時鐘週期中有多少個子狀態?”

許多教科書暗示 CPU 只有一個時鐘訊號——一堆 D 觸發器,每個觸發器儲存 CPU 當前狀態的 1 位,這些觸發器將其狀態透過其“Q”輸出驅動出去。這些觸發器始終保持其內部狀態不變,除了在一個且僅一個時鐘上升沿的瞬間,每個觸發器會短暫地“檢視”其“D”輸入並鎖存新位,並且很快之後(當新位與舊位不同時)將“Q”輸出更改為新位。

理論上單個時鐘訊號很好。遺憾的是,在實踐中,我們永遠無法使時鐘訊號精確地同時到達每個觸發器——總存在一些時鐘偏差(傳播延遲的差異)。避免這些時鐘問題的一種方法是使用一系列不同的時鐘訊號。[35] 另一種方法是使用足夠的功率[36] 並仔細設計一個 w: 時鐘分配網路(可能採用 w: H 樹 的形式)並進行 w: 時序分析,將時鐘偏差減少到可以忽略的程度。

繼電器計算機被迫使用至少 2 個不同的時鐘訊號,因為存在“觸點彈跳”問題。

許多晶片只有一個“時鐘輸入”引腳,給人一種它們使用單個時鐘訊號的錯覺——但在內部,“時鐘發生器”電路將該單個外部時鐘轉換為晶片使用的多個時鐘訊號。

許多在歷史上和商業上重要的 CPU 在一個完整的時鐘週期中都有許多子狀態,並且有兩個或多個“非重疊時鐘訊號”。大多數 MOS 積體電路在 1970 年代使用雙時鐘訊號(兩相時鐘)[37]

從單個晶片和電線構建 CPU 需要很長時間。因此,許多人採用各種捷徑來減少需要連線的東西的數量,以及他們需要進行的佈線量。

  • 3 狀態匯流排而不是 2 狀態匯流排通常需要更少、更短的連線。
  • 有時,使用單獨的地址暫存器和資料暫存器以及其他專用暫存器,而不是可以(在不同時間)用於驅動資料匯流排(在儲存期間)或地址匯流排(在索引載入期間)的通用暫存器,需要更少的硬體。
  • 如果軟體人員堅持使用可以(在不同時間)用於驅動資料匯流排(在儲存期間)或地址匯流排(在索引載入期間)的通用暫存器,則模擬它們可能需要更少的硬體:讓所有程式設計師可見的暫存器僅驅動一個內部微架構匯流排,並且(在不同時間)從該內部匯流排載入微架構暫存器 MAR 和 MDR,然後從 MAR 驅動外部地址匯流排,從 MDR 驅動外部資料匯流排。這犧牲了一點速度,並且需要更多的微程式碼,以便更容易構建。
  • 與 32 位或 64 位地址和資料暫存器相比,使用 8 位資料暫存器(有時將 2 個組合在一起以獲得 16 位地址暫存器)通常需要更少的硬體。
  • 如果軟體人員堅持使用 16 位或 32 位或 64 位資料暫存器和 ALU 操作,則模擬它們可能需要更少的硬體:使用多個狹窄的微架構暫存器來儲存每個程式設計師可見的暫存器,並將每次透過一個狹窄的匯流排饋送 1 位或 4 位或 8 位或 16 位,以獲得每個週期的部分結果,或饋送到寬 MAR 或 MDR 的子部分。這犧牲了一點速度(並在其他地方增加了複雜性),以便更容易構建匯流排。(參見:68000,如上所述)
  • 與許多暫存器相比,使用更少的暫存器通常需要更少的硬體。
  • 如果軟體人員堅持使用許多暫存器,則模擬其中一些(如一些提議的 MMIX 實現)或可能全部(如一些 PDP 計算機)可能需要更少的硬體:使用 RAM 中的保留位置來儲存大多數或所有程式設計師可見的暫存器,並在需要時載入它們。這犧牲了速度,使 CPU 更容易構建。遺憾的是,似乎不可能消除所有暫存器——即使將所有程式設計師可見的暫存器放在 RAM 中,似乎仍然需要一些微架構暫存器:IR(指令暫存器)、MAR(記憶體地址暫存器)、MDR(記憶體資料暫存器)以及……還有什麼?
  • 哈佛架構通常比普林斯頓架構需要更少的硬體。這是使 CPU 更容易構建 *和* 執行更快的幾種方法之一。

哈佛架構

[編輯 | 編輯原始碼]

最簡單的 CPU 控制邏輯使用哈佛架構,而不是普林斯頓架構。但是,哈佛架構需要 2 個獨立的儲存單元——程式儲存器和資料儲存器。一些哈佛架構機器,例如“Mark 的 TTL 微處理器”,甚至沒有指令暫存器——在這些機器中,程式計數器中的地址始終應用於程式儲存器,程式儲存器輸出的資料直接控制著 CPU 中發生的所有操作,直到程式計數器發生改變。遺憾的是,哈佛架構使得將新程式儲存到程式儲存器中有點棘手。

微程式碼架構

[編輯 | 編輯原始碼]

參見 微處理器設計/微程式碼

彙編技巧

[編輯 | 編輯原始碼]

...

“我不建議除了徹頭徹尾的瘋子之外的任何人再用散裝晶片來自己用線繞制機器,儘管在 70 年代中期到後期,這曾經是一種很常見的做法”。——傑夫·鄧特曼

程式設計技巧

[編輯 | 編輯原始碼]

...

進一步閱讀

[編輯 | 編輯原始碼]
  1. “觸控魔法。我的意思是更深入地瞭解計算機的工作原理”——比爾·布茲比 [1]
  2. “為了在晶片設計期間評估 6800 架構,傑夫的團隊使用 5 塊 10 英寸 x 10 英寸(25 釐米 x 25 釐米)的電路板,用 451 個小規模 TTL 積體電路構建了等效電路。後來,他們透過使用 ROM 和 MSI 邏輯器件將其減少到一塊電路板上的 114 個積體電路。”——w:Motorola_6800#開發團隊
  3. 特里·裡特和喬爾·博尼。 “一場革命的微處理器:6809。第 3 部分:最終想法”。照片 2 說明: “處理器的門級 TTL 模型包括十塊電路板,每塊電路板包含 80 到 120 個積體電路。所需的 10,000 個連線中有很多是錯誤的。系統必須經過測試才能找到並糾正構造和邏輯錯誤。”
  4. “68030 原型機,速度為 1 MHz,使用 18 塊 TTL 板”。引述:“68030,本質上是帶有整合 MMU 和虛擬記憶體功能的 68020。我們確實有一個 68020 的完整硬體麵包板。68030 麵包板是 18 塊 24 英寸 x 24 英寸的線繞麵包板,每塊麵包板都帶有 23x14 個 20 引腳 DIP 插座!”
  5. “第一個實現是 TS1,一個由分立電晶體-電晶體邏輯 (74F TTL) 器件組成的中央處理單元。”——w:PA-RISC
  6. “非同步 40 位 TTL CPU”,作者:漢斯·薩默斯,1992 年
  7. 維基百科:Zilog Z80
  8. 肯·希裡夫。 “Z-80 具有 4 位 ALU。它是這樣工作的。”,2013 年。
  9. 安德魯·霍姆。 “Mark 1 FORTH 計算機”
  10. a b c Dave Feinberg. "課堂上的簡單且實惠的 TTL 處理器".
  11. a b Kevin McCormick,Colin Bulthaup,Scott Grant 和 Eric Prebys "VHS". 引用:“十多年來……學生們必須在課堂上用分立積體電路構建一臺簡單的 8 位計算機。這臺計算機沒有微處理器 - 你需要自己構建處理器。這臺機器被用於軟體中模擬更復雜的 32 位處理器,稱為 Beta。……在 1996 年秋季,Scott、Colin、Eric 和我構建了 Beta 的直接硬體實現,我們稱之為 VHS。在 6.004 的歷史上,還沒有人成功構建過 32 位機器。我們做到了,我們的機器執行速度至少是競爭對手的 50 倍!”
  12. "74181 是一個位片算術邏輯單元 (ALU)……第一個完整的單晶片 ALU……許多計算機 CPU 和子系統都基於 '181,包括……PDP-11 - 歷史上最受歡迎的 小型機" -- 維基百科:74181
  13. a b 維基百科:Data General Nova#處理器設計
  14. "我的家用 TTL 計算機處理器 (CPU)",作者:Donn Stewart
  15. "如果記憶體地址恰好適合一個字,那麼指令執行單元執行的基本演算法是最容易表達的。" -- "終極 RISC",作者:Douglas W. Jones
  16. "如果你能操作的最大資料小於你的地址大小,那真的很糟糕。這意味著累加器需要與 PC 相同大小 - 16 位。" -- "計算機體系結構"
  17. Andrew Holme. "Mark 2 FORTH 計算機"
  18. GALU - 基於門陣列邏輯的 ALU 積體電路。
  19. Bill Buzbee. "Magic-1 微架構".
  20. Dieter Mueller. "多路複用器:邏輯設計的戰術核武器" 2004.
  21. Rodney Moffitt. 微程式算術處理器. 55 個 TTL 晶片。核心 4 位加法器/減法器大約有 7 個 SSI 晶片。ALU 圍繞該核心大約有 7 個額外的 SSI 邏輯晶片,以支援“與”、“或”、“異或”、“增量”、“減量”。圍繞 ALU 的指令暫存器和微程式序列器處理 (4 位)“乘法”和“除法”。
  22. Dieter Mueller. 帶有加法器的 ALU. 2004.
  23. LM3000 CPU
  24. Decode Systems. "摩托羅拉 14500B"
  25. "1 (是的,一個) 位計算機?MC14500B"
  26. TinyMicros 維基百科:MC14500B
  27. Dennis Feucht. "被遺忘的電路(應該被帶回來):MC14500B 工業控制單元". EDN 2012.
  28. "MC14500B - 一位工業處理器"
  29. "icu-assembler:用 C 編寫的摩托羅拉 MC14500B ICU 的彙編器"
  30. Eric Smith. "摩托羅拉 MC14500B"
  31. 維基百科:序列計算機
  32. VHS,由 Kevin McCormick、Colin Bulthaup、Scott Grant 和 Eric Prebys 為他們的 MIT 6.004 課程構建的 32 位 CPU。
  33. 6.004 競賽照片 [2][3]
  34. "Libby8" 新復古計算機,作者:Julian Skidmore
  35. Bill Buzbee. Magic-1 自制 CPU:時鐘
  36. "英特爾的 Atom 架構:旅程開始",作者:Anand Lal Shimpi,2008 年。在一個大型微處理器中,驅動時鐘訊號所使用的功率可能超過整個晶片總功耗的 30%。
  37. 維基百科:兩相時鐘

繼電器計算機

[編輯 | 編輯原始碼]
  • "繼電器計算機的歷史" (jhallen) 列出了幾個繼電器 CPU。
  • "relaysbc:單板繼電器計算機/訓練器" (jhallen) (83 個繼電器,全部是相同的 DPDT DIP 繼電器。CPU 暫存器用邊緣觸發的 D 觸發器實現,每個位只需 1.5 個 DPDT 繼電器)。
  • Harry Porter 的繼電器計算機 (415 個繼電器,全部是相同的 4PDT) ("RC1")
  • "RC-3 繼電器計算機" (418 個繼電器,全部是相同的 4PDT。前面板上 421 個指示燈和 134 個開關。以 6 Hz 的速度執行)。 RC-3 繼電器計算機(背景). RC-3 繼電器計算機(技術細節).
  • "繼電器計算機二",作者:Jon Stanley (281 個繼電器,兩種型別:177 個 SPDT 和 104 個 4PDT) ("RC2")
  • "繼電器二進位制加法器",作者:Jon Stanley。 "一個簡單的 4 位繼電器加法器,有兩個 4 位輸入儲存/暫存器。"展示了用 1 個繼電器構建 1 位儲存單元、用 1 個 DPDT 繼電器構建 1 位半加器以及用 2 個繼電器構建 1 位全加器的方法。
  • "i2 8 位繼電器計算機" (大約 300 個繼電器,兩種型別:單極和雙極,加上 2 kB 靜態 RAM 用作記憶體),作者:???。i2 指令集是 John Stanley 的 RC2 ISA 的修改版本。
  • Zusie - 我的繼電器計算機,作者:Fredrik Andersson (使用大約 330 個繼電器,兩種型別:4 極和 6 極雙擲繼電器,加上約 30 個積體電路用於 RAM 和微程式碼)
  • 繼電器計算機,作者:Kilian Leonhardt (德語):一臺“大型計算機”,大約有 1500 個繼電器和一個程式 EEPROM,以及一臺“小型計算機”,有 171 個繼電器。
  • DUO 14 PREMIUM 由傑克·艾森曼設計(約 50 個繼電器,包括 4 個可定址的“麵包屑”RAM,每個麵包屑為 2 位,加上 6x8 開關 DIP 開關中的 48 位程式 ROM。唯一的半導體元件:555 定時器、十進位制計數器和時鐘發生器中的電晶體。每個命令有 6 位,程式 ROM 中的 8 個命令由 3 位程式計數器選擇)。
  • 維基百科:Z3(計算機),由康拉德·楚澤設計,是世界上第一臺工作中的可程式設計全自動計算機器。使用 2,000 個繼電器製造。
  • Z3 Nachbau[7][8],霍斯特·楚澤(康拉德·楚澤的兒子)和勞爾·羅哈斯在 2001 年重建的經典 Z3。32 字、22 位寬的記憶體也完全由繼電器構成,大約 700 個繼電器。(德語)[9]
  • 霍斯特·楚澤的新的 Z3 重建:為紀念康拉德·楚澤誕辰 100 週年而於 2010 年建立。大約 2500 個現代繼電器。(德語)
  • Rory Mangles。Tim 7:一個 4 位繼電器 CPU,程式儲存在穿孔帶上
  • Rory Mangles。Tim 8:"按繼電器數量計算,世界上最小的圖靈完備繼電器計算機之一",一個 8 位繼電器 CPU,程式儲存在穿孔帶上,資料儲存在離散電容器 (!) 中(沒有 RAM 晶片),每個位元組一個繼電器極;使用 152 個繼電器,其中大多數是單極的。
  • Pavel Dovgalyuk。一把繼電器。用 4PDT 繼電器構建的繼電器計算機。

分立電晶體計算機

[edit | edit source]
  • James Newman。超級處理器。"在所有東西上都放上 LED,這樣我們就可以實際看到資料移動和邏輯發生。"沒有積體電路;只有 LED 和電阻器以及大約 14,000 (?) 個分立電晶體(2N7000,透過孔 TO-95 封裝?)在 CPU 的功能部分。
  • Dieter Mueller 的 MT15 幾乎完全由(大約 3000 個)獨立的 SMT 電晶體構成……還有一些關於微程式設計和 ALU 設計的 文章
  • Joe Wingbermuehle 的 Q1 計算機。幾乎完全由(3105 個)獨立的穿孔 PN2222A 電晶體構成。"使用時鐘相位,以便可以將透明鎖存器用作暫存器,以降低電晶體數量,但代價是速度。"8 位資料匯流排,16 位地址匯流排。
  • Svarichevsky Mikhail 顯然正在構建一個完全由分立電晶體組成的處理器。使用非常仔細的模擬調諧(12 個不同值的電阻器),Svarichevsky Mikhail 開發了一個 4 電晶體全加器:"BARSFA - 4-TRANSISTOR FULL ADDER"。(4 個肖特基二極體——跨越每個電晶體的基極和集電極——真的有必要嗎,還是僅僅是為了提高效能?)(他還展示了 CMOS 全加器的規範實現,需要 28 個電晶體)。
  • Simon Inns。"4 位計算機" 展示了一個完全由 AND、OR、NOT 門組成的 4 位加法器,而 AND、OR、NOT 門又是完全由分立 NPN 電晶體和電阻器構建的。"A" 和 "B" 4 位輸入的撥動開關;5 個 LED 輸出總和(包括進位位)。(一個 22 電晶體全加器)。
  • Rory Mangles。小蒂姆:二極體-電晶體邏輯(DTL);400 個 2N3904 NPN 電晶體加上二極體、電阻器、電容器等,共計 "2700 個元件" (?)。有 4 個暫存器:工作暫存器 (8 位)、指令暫存器 (8 位)、地址暫存器 (12 位)、程式計數器 (12 位) 和一個排序器。(還使用 SRAM 晶片中儲存的一些零頁“暫存器”)。

氣動計算機

[edit | edit source]

K'nex 計算機

[edit | edit source]

???這些真的算作“處理器”嗎???

TTL 計算機

[edit | edit source]

從 TTL 晶片構建的家用 CPU 包括:(不按特定順序——我們應該按 IC 的數量排序嗎?)


  • "維克多的驚人 4 位處理器"……可以使用手動開關在電路中重新程式設計。大約 90 個晶片。
  • 銀河系 4 位 CPU,作者:Jon Qualey。兩個 2716 EPROM 用於儲存微指令程式碼,兩個 2114 靜態 RAM 用於程式記憶體。總共 25 個 IC,74LS TTL。
  • LM3000 CPU 由佛蒙特州本寧頓學院的五名學生設計和製造,使用了 53 個積體電路。
  • John Doran 的 D16/M 是一款 16 位數字計算機,使用 SSI 和 MSI HCMOS 整合邏輯實現,並使用繞線技術構建。它的時序和控制單元是微程式化的(完全水平,具有 72 位控制字)。
  • (待辦事項:誰?)已經使用(TTL)分立邏輯構建了一個 MC14500 克隆。[1] (待辦事項:還有誰?)已經使用 FPGA 構建了一個 MC14500 克隆。[2]
  • 田中利雄的 TANACOM-1 是一款 16 位 TTL 小型機,總共使用 146 個 IC,包括 ALU 中的 4 個 SN74181 和一個 74182。


  • Steve Chamberlin 的 BMOW 1(一堆亂線) 是一款 8 位 CPU,由分立的 7400 系列邏輯和一些 22V10 和 20V8 GAL 構成。所有數位電子元件都位於一個大型 Augat 繞線板上,用於互連大約 50 個晶片。BMOW 1 包含大約 1250 根連線元件的線。所有資料匯流排都是 8 位;地址匯流排是 24 位。3 個並行微程式碼 ROM 生成 24 位微程式碼字。VGA 影片輸出為 512×480,兩種顏色,或 128×240,256 種顏色。微程式碼模擬 6502(或多或少)。使用兩個 4 位 74LS181 形成核心 8 位 ALU。
  • Steve Chamberlin。"Nibbler 4 位 CPU"。12 位地址空間。16 x 2 字元 LCD 顯示屏、蜂鳴器、按鈕輸入。13 個標準的 7400 系列邏輯晶片 + 2 個用於微程式碼的 EEPROM + 1 個程式 EEPROM + 1 個數據 4K x 4 SRAM,總共 17 個晶片 + 一塊 2 行 LCD 和幾個按鈕,透過繞線方式連線到 5 英寸 x 4 英寸的穿孔板上。"Nibbler 演示!"
  • "一個專有的 8 位引擎,由 3 個 PROM 和幾十個 TTL 晶片構建",正如 Jeff Laughton 所述。
  • "60 赫茲的單位元計算":一臺由 EPROM 和少量邏輯晶片組成的微型計算機;由 Jeff Laughton 設計。
  • "廉價影片之子的新娘 - KimKlone":TTL 晶片和 EPROM 為微控制器(65C02)添加了額外的程式設計師可見暫存器和指令。
  • MyCPU 專案 - [10][11]:"歡迎所有人參與併為專案做出貢獻。" CPU 由 5 塊板上的 65 個積體電路構建而成。1 MB 銀行切換 RAM。最初由 Dennis Kuschel 開發。顯然,已經構建了幾個 MyCPU 系統?一個 MyCPU 系統執行 HTTP 伺服器;另一個 MyCPU 系統執行(純文字)Web 瀏覽器。
  • HJS22 - 一臺自制的 TTL 計算機。 漂亮的前面板,帶有許多指示燈和開關。
  • 澳大利亞電子 EDUC-8 微型計算機:"最早的 DIY 微型計算機之一"。"內部實現是序列,這使得元件經濟,因為大多數資料路徑僅為 1 位寬。"
  • "學習構建處理器" 展示了一些早期階段的 TTL CPU 的照片,這些 CPU 在無焊麵包板上構建而成。
  • Kyle Hovey。 "如何構建 8 位計算機""8_bit_spaghetti"。一臺在無焊麵包板上構建的 TTL CPU,使用 11 種類型的 74LSxx 晶片。
  • Albert Malvino 和 Jerald Brown。在他們的書《數字計算機電子學》(1993 年)中,他們描述了 "SAP-1 最簡單" 處理器。
    • Pong Guy 在網上釋出了 SAP-1 的原理圖 [12]
    • 唉,最初的 SAP-1 使用的幾個部件顯然不再生產。Pong Guy 描述了一些替代部件,這些部件允許您使用仍在生產的部件來構建 SAP-1。[13][14]
    • Pong Guy 發現,用微程式碼 ROM 替換 SAP-1 的硬連線 "控制矩陣" 可以將 IC 的總數從 48 個減少到 35 個。[15]
    • Pong Guy 建議透過用 (74HC194) 雙向移位暫存器替換 (74HC173) D 觸發器暫存器來為 CPU 新增位移操作。[16][17]
  • Pong Guy。 "ASAP-3 - 幾乎像可能的計算機 3"。Pong Guy 設計了一臺 8 位計算機,由 55 個分立的 TTL 邏輯晶片(包括 RAM 和程式 ROM 晶片)組成。 ASAP-3 原理圖。Pong Guy 還設計了一個佈局良好的 PCB 來容納這 55 個晶片、振盪器、一個 10 位 LED 顯示器 + 2 行 LCD 顯示器、一個 22 鍵鍵盤和一些撥動開關。ASAP-3 模擬了 8085 指令集的大部分功能。執行速度超過 500kHz。受 "SAP-1 最簡單微處理器" 的啟發。


  • John Peterson。 "繞線時代"。描述了一個 "緊張的" 硬體實驗室課程,該課程使用序列 I/O、指示燈和開關前面板,以及完全由 74Cxx 晶片、一些 2716 UV 可擦除 ROM 和一些 SRAM 組成的 8 位 CPU 來構建一臺工作計算機。(架構非常接近 PDP-8,使用與 PDP-11 Unibus 相似的 URBUS 匯流排。)
  • Gugel 和 Schwartz 博士。 "G-CPU"[18]
  • "自制 CPU/底層設計" 推薦了幾本包含底層 TTL CPU 設計資訊的書籍。
  • Randy Thelen。 Mippy(每年數百萬條指令) 是一款 1MHz、16 位 Forth 機器,使用 74HCT00 系列 TTL 晶片從頭開始構建而成。資料匯流排和地址匯流排是分開的,每個匯流排都是 16 位寬的。


由 TTL 晶片構建的商業小型機包括

  • Tandem/16(NonStop I)最初由標準低密度 TTL 晶片實現。它具有高可用性功能,這些功能在今天仍然適用。[3]

(這個 Tandem/16 使用了什麼 ALU?74181?)

  • TS-1 是 HP PA-RISC 架構的第一個商業實現,它是用分立的 74F TTL 晶片構建的。32 位 CPU 分佈在 6 塊板上,每塊 8.4" x 11.3" 的板上大約有 150 個晶片。這六個 TS-1 板實現了處理器、一個 4096 個條目的 TLB、64 KB(L1)指令快取和 64 KB(L1)資料快取。[4]

(這個 Tandem/16 使用了什麼 ALU?74181?)

(這個 Kenback-1 使用了什麼 ALU?74181?)

  • Datapoint 2200 包含一個由標準 TTL 元件組成的 8 位 CPU。[6]
  • Data General Nova 可能包含第一個 (?) 單 PCB 上的 CPU。它的 "16 位"(儘管它透過一個 4 位數學單元進行計算)CPU 放在一個 15" x 15" 的單 PCB 上。[7]

(Nova 使用了什麼 ALU?74181?)

  • RCA 1802 "COSMAC" 處理器的第一個原型 FRED 由 Joseph Weisbecker 設計,並在家中用 100 個 TTL 晶片構建而成。[8]
  • Cray-1 是第一個使用積體電路的 Cray 設計。它只使用了 4 種不同的 IC 部件編號:[FIXME:具體是哪些編號?] 一種 ECL NOR 門、一種 MECL NOR 門、用於暫存器的 16x4 位 SRAM 和用於主記憶體的 1024x1 位 SRAM。[9]
  • 這本書《新機器的靈魂》由 Tracy Kidder 撰寫,描述了代號為 "Eagle" 的計算機的設計過程,後來被稱為 Data General Eclipse MV/8000。Eagle 是第一臺使用可程式設計邏輯晶片 (PAL) 的 DG 計算機。可能是第一款用於任何商用計算機的 PAL?[10][11]
  • 最初的 VAX 11/780 是用 TTL 實現的,在一個四乘五英尺的機櫃裡容納了一個 CPU。[12] VAX CPU 分佈在 27 塊 PCB 上。[11]
  • 32 位 20-MIPS DECWRL "Titan" 處理器由 "100K ECL" MSI 部件[13] 構建在四個大型板上。[14]



  1. "一個 MC14500 克隆......一個用分立邏輯構建的克隆電路..."
  2. "MC14500 1 位 CPU (ICU)"
  3. 維基百科:串聯計算機#TNS 堆疊機器
  4. Paul Weissmann。 "早期 PA-RISC 系統".
  5. 維基百科:Kenbak-1
  6. 維基百科:Datapoint 2200
  7. 維基百科:Data General Nova.
  8. 維基百科:RCA 1802
  9. 維基百科:Cray-1
  10. 維基百科:新機器的靈魂
  11. a b John Faughnan;Sanja Stevanovic。 "鷹的飛行:超級小型機的誕生與生命。".
  12. 維基百科:VAX
  13. Norman P. Jouppi 和 Jeffrey Y. F. Tang。 "具有高持續效能與峰值效能比的 20-MIPS 持續 32 位 CMOS 微處理器"。1989 年。第 2 頁。
  14. Michael J. K. Nielsen。 "Titan 系統手冊"。1988 年。
華夏公益教科書