2014年3月21日 星期五

BIOS簡單談

  BIOS(Basic input/output system),從字面的意思上翻譯就是控制了整個電腦的input/output device。而學BIOS,我認為可以從了解BIOS控制的device是什麼開始。
下圖是網路上找到的intel ivy-bridge架構圖,看圖說故事也比較容易也比較好理解,我想應該沒有侵權吧...(逃)。


  簡單來說X86架構可分為CPUGPUDDR(memory)、南橋chipset(PCH)。而周邊有許多的device,連接的方式有PCIE(古早還有PCI、AGP...)、USBLPCATASPI(連接BIOS ROM)、I2C等...CPU掌管系統所有的動作執行,下一步的指令基本上都會讓CPU知道並執行,GPU負責電腦的顯示部分(早前有北橋這東西,GPU是在北橋上的,由於時代的進步,GPU已經跟CPU做在一起了,現在CPU、北橋、南橋在同一個晶片上的也不少)。

  而周邊的設備則是透過南橋晶片來連接,連接的方式就是之前提到的PCI,USB等...(在業界的能看到intel南橋EDS spec的話,找signal description哪一章就可以更清楚了)。
古早時代還是稱之為legacy的BIOS,當時都是用組語寫的code。小弟有幸參與到哪個時代的尾聲,當時整個BIOS只有512K到1MB左右,而且都是用組語寫成的,code裡充斥AX、 BX、 CX...後來不知哪位大老看不下去了,改成現在的UEFI規格,code變得好看許多,也更結構化,但code size也隨之暴漲,追code也沒有以前那樣一條鞭式的好追,不過整體來說好處當然是多過壞處,但我還未夠班,就不在這多細談。

  我覺得電腦的power button就像個鬧鐘,當被按下之後,人腦裡的SPI ROM(BIOS)就開始initial我們各個需要初始的機能,一開始先通知大腦(CPU),時間到了該清醒了,把接下來要做的事放到腦中的記憶體(memory)中讓我們知道接下來要做什麼。再來讓手能夠活動(PCI device),腳也能活動(USB device),準備下床開始新的一天。而聽到鬧鐘響起還躺在床上昏昏欲睡的階段可以想做是SEC phase,把想做的事放到腦中的記憶體可想做是PEI phase,之後通知四肢們該動作了是DXE phase,真的下床後就如同電腦開機了也就是BDS phase。不過這當然是很粗糙的看法,實際上BIOS做的事情是很多的,上面所提到的xxx phase就是UEFI的基本架構,細節也還是要看spec以及實作去了解。不過現在網路上也很多高手也開始寫BIOS相關的內容,感覺這像是祖傳祕方的玩意兒也慢慢開放了阿~~~而小小一顆SPI ROM能夠控制這麼多東西一直是我覺得很神奇有趣的一件事。


沒有留言:

張貼留言