新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 從4004到core i7:處理器的進化史 (3)-1—萬事開頭難

從4004到core i7:處理器的進化史 (3)-1—萬事開頭難

作者: 時間:2014-02-19 來源:摘自《果殼小組》網(wǎng) 收藏

  有了契約,整個解決方案就被分成了兩部分:硬件和軟件。只要其中的接口(interface)不變,兩邊其實都不大關(guān)心對面究竟在背地里搞什么名堂。我們經(jīng)常見到這種接口,它就是指令集(instruction set)。

本文引用地址:http://butianyuan.cn/article/221768.htm

  于是在軟件一方,人們漸漸覺得機器碼看起來實在是太詭異了,就出現(xiàn)了高級語言,讓編程這件非人類的事情盡量地向人類的自然語言靠攏。當(dāng)然,這一切都離不開編譯器(compiler)的支持。如今人們已經(jīng)離軟硬劃分的借口很遠了,遠到了軟件已經(jīng)出現(xiàn)了自己的一套哲學(xué)、思考問題的范式。

  在,也就是硬件的一方,人們的步伐看起來似乎要慢得多。畢竟,硬件是一件需要大量金錢和經(jīng)驗的工作,這導(dǎo)致它不可避免的不像軟件那么易于上手,從業(yè)者不那么人山人海。不過,我們已經(jīng)看到了至少3代的,其中每一代的性能提升都是非常巨大的。我們將要看到,這種巨大的性能的提升,其本質(zhì)是集成度的極大提高,源動力是電路和器件層面的。和軟件相反,今天的“聰明”的雄心勃勃,正在試圖越過曾經(jīng)神圣不可侵犯的契約,高效的完成一些以往只有編譯器才能完成的優(yōu)化工作。

  上面的內(nèi)容說得有點遠了,我們再考慮回我們的小學(xué)算術(shù)題,只不過這一次完全從CPU的角度考慮,就是下面幾條指令:

  load reg1, mem1
  load reg2, mem2
  add reg1,reg2,reg3
  store mem3, reg3

  其中我們假設(shè)1和2分別存在mem1和mem2里,運算結(jié)果存在mem3里

  從上面的偽匯編碼,再結(jié)合算術(shù)的類比,我們想到:

  我們必須有一張紙來記住題目和答案->CPU必須有(memory)、寄存器(register)的配合

  我們必須會計算加法->CPU中必須有算術(shù)-邏輯單元(Arithmetic Logic Unit,ALU)。

  我們需要理解紙上的符號->CPU需要有指令譯碼(instruction decode)器

  紙上的符號被理解之后還要被我們轉(zhuǎn)移到腦海中至少短暫地被記住->CPU需要有與直接進行交涉的加載/存儲單元(load/store unit)

  我們需要從試卷上的一大堆題目中選擇一道我們將要完成的題目->CPU需要有取指(instruction fetch)單元

  上面的例子中我們已經(jīng)涉及到了幾乎全部的CPU子模塊。漏下的可能只是分支單元(branch),I/O單元(I/O controller),以及控制上面這么多邏輯的控制器(controller)了。我們得到了第一個CPU模型,正如第一代CPU設(shè)計者們用非常straightforward的思考建造的一樣。

  以上我們從空間上討論了第一個CPU應(yīng)該有些什么單元,下面我再列一下從時序上來說一個指令執(zhí)行分為哪些階段:

  IF = instruction fetch
  ID = instruction decode
  OC = operhand calculation
  EX = execution
  WB = result writeback

  將上面這5個步驟老老實實重復(fù)一遍,一條指令就執(zhí)行完了。

  注意上面的MR步驟對于的操作是只讀的,WB步驟對于存儲器的操作是只寫的。你解題的時候應(yīng)該不能擅自修改題目的運算數(shù),或者抄襲一個還不存在的答案吧!!

  這第一個CPU模型雖然簡陋,卻能夠工作。我們后續(xù)將要討論的高性能無不是處于對它的優(yōu)化改良而成。

c語言相關(guān)文章:c語言教程




評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉