(轉)從PC總線到ARM的內部總線
轉自:http://blog.chinaunix.net/u1/34474/showart_423712.html
我在學習《Linux設備驅動程序(第3版)》的 第九章 與硬件通信 時,對 I\O總線的概念 不是很清晰,所以查找了有關資料。現在總結如下:
本文的參考資料:
1、 《AMBA、AHB、APB總線簡介》 作者 adamzhao 日期 2006-11-16 19:33:00
轉載網址:http://www.openhard.org/myspace/blog/show.php?id=75802
2、 《Introduction to AMBA Bus System 》臺灣 工研院 / 系統晶片技術中心工程師 吳欣龍,PDF格式
下載地址:http://tpe-wh3.dwins.net/download/member_file/2002/soc/2002-5-1.pdf
3、 《PC架構系列:CPU/RAM/IO總線的發展歷史!》
轉載網址:http://blog.csdn.net/xport/archive/2006/11/16/1387928.aspx
4、 《認識物理I/O構件- 主機I/O總線(1)》作者:IT168存儲頻道 2007-04-10
原文網址:http://storage.it168.com/g/2007-04-10/200704101424234.shtml
總線的演變
首先應該講講總線的演變歷史,這方面《PC架構系列:CPU/RAM/IO總線的發展歷史!》這篇文章寫得很好!感謝文章的作者!以下內容大量來自這篇文章,可以說是這篇文章的縮減轉載。
公共總線
早期PC中,CPU/RAM/IO都是掛在一條總線上,所有的部件都必須在同步的模式下工作。這樣就帶來一個"互鎖" (locked to each other )效應:所有設備都被限定在一個通用時鐘頻率(Clock Frequency)上面,整個系統的速度會被系統中最慢的設備限制,系統的整體性能無法提高。
南橋誕生(I\O總線誕生)
1987年,康柏(Compaq)公司想到一個辦法: 將系統總線與I/O總線分開,使得2個不同的總線工作在不同的時鐘頻率上。CPU和內存工作在系統總線上(the System Bus),獨立于所有的I/O設備。這樣高速的CPU/RAM組件就擺脫了低速I/O設備的束縛。
這里的Bridge,就是現在的南橋(South Bridge)芯片的前身,而它實際起到了降頻的作用。
倍頻出世
從80486開始,CPU的發展迅猛,頻率大幅攀升。內存開始變得跟不上CPU的發展步伐了。Intel 于是決定在80486中引入倍頻(Clock Doubler)的概念。內存依舊工作在系統總線上,與系統總線保持同樣的工作頻率,而CPU的內部工作頻率(CPU主頻)是:
CPU 主頻 = 外頻(系統總線頻率System Bus Frequency)* 倍頻 (Clock doubler)
北橋和前端總線的誕生
PC結構的變化趨勢是把低速設備與高速設備用隔離總線的方法進行隔離。而發展到后來,就演變出了北橋(North Bridge)芯片。內存與北橋間的總線稱為內存總線,把CPU與北橋間連接的這段總線成為前端總線(Front Side Bus,FSB),也就是系統總線(System Bus)!
PC中的I\O總線
通過上面的文章,我們知道的總線的演變過程。現在專門來講講I\O總線。
總線:用來傳送信號或能量的構造器。
系統 I/O 總線將指令從內存傳導至與輸入\輸出處理器(IOP)相連的設備。系統 I/O 總線還會將指令從 IOP 傳導回內存。
以下的內容來自《認識物理I/O構件- 主機I/O總線(1)》 ,這篇文章寫得很好。感謝文章作者!
在數據離開系統內存總線后,它通常傳輸到另一條總線:主機I / O總線。現在最常見的主機I / O總線是P C I總線,另外還有如PCI-E總線、ISA總線,E I S A總線及V M E總線等等。主機I / O總線實現了幾種重要的功能,包括:
允許加入新的插卡。
允許從內存總線輸入和輸出數據。
允許在插卡之間傳輸數據。
主機I / O總線并不是處于設備與系統內存總線間的僅有的中介物,在主機I / O總線和系統內存總線之間還存在著橋控制器芯片(南橋),該芯片負責在兩總線之間交換數據。主機I / O總線是在內存和外設之間傳送數據的運輸工具。
ARM處理器的內部總線
認真研究ARM9(以s3c2410為例)的結構框圖,你會發現:作為高性能的嵌入式CPU,ARM9可以看成一個高度濃縮的計算機系統,類似于分化出南橋芯片且有倍頻的計算機構架!具體見下圖:
看了這些,應該可以對計算機的總線有了一些認識,更重要的是對ARM9的體系構架有了更好地認識!這里值得注意的是:ARM 的內存芯片并沒有直接接在“內存總線”上,而是通過內存控制器間接地和“內存總線”連接。
如果你有興趣更深入地研究ARM的總線結構,推薦你看一下我上面提到的參考資料:《AMBA、AHB、APB總線簡介》、《Introduction to AMBA Bus System 》 。我就不在這廢話了,因為他們講得已經很全面,很精彩了。你如果是ARM總線的設計者,你應該看看ARM 公司的《AMBA? Specification (Rev 2.0)》文檔(去ARM的官方網站注冊一下就可以下載了)。