计算机系统和中断的概念
概念:
cpu:特指處理器核心,而不是處理器封裝,因為很多處理器將橋芯片和內存控制器芯片都封裝在一起,造成一種誤解,實際上處理器核心并不包含這些內容。
外設:帶有處理邏輯的集成電路核心。
一、CPU和外設芯片
1、功能對等性和地位的不平等
外設芯片也可以處理數據,因此和cpu在功能上是對等的,GPU概念的提出加深了我們對這種對等性的理解。cpu是相對比較通用的芯片,而外設呢是功能比較專一的芯片。有時候,外設在某方面的處理能力要遠遠高于cpu。
馮.諾依曼機器是以處理器即CPU為中心的,因此在編程層面上cpu和外設是不平等的。由于歷史原因,在那個年代,計算機主要用于科學計算,cpu足以勝任全部任務,因此外設幾乎是不存在的,加上設計的簡單性,軟件指令統一由cpu發出和執行,因此軟件意義上的不平等是歷史原因和設計原因造成的。
2、通信機制
不管怎樣,外設連接于系統上,cpu和外設必然需要相互通信。由于編程的不平等性,一般意義上所有指令由cpu發出,cpu可以主動讀寫或者操作外設,而外設卻很難直接操作cpu,因此提出中斷的概念。外設通過硬件邏輯,而不是軟件邏輯(軟件邏輯一般全部由cpu負責)來通知cpu有事情要做,cpu必然需要一種機制被動得到這種通知,這就是中斷。
二、主板架構
1、以cpu為中心
由于歷史原因和設計原因,主板都是以cpu為中心的,然后通過硬件連線邏輯連接各種外設。最簡單的連接方式就是外設們和cpu連接在一條共享的線路上(由于它們的平等性)。
2、以各種橋連接各種總線
然而外設們的速率和通信協議彼此并不一定相同,和cpu之間的協議也有所不同,那么必然需要一種設備來進行協議轉換和數據緩沖,以適配速率不同,協議不同的各種外設之間以及外設和cpu之間的通信。因此提出總線的概念,連接在一種總線上的所有設備的速率和底層通信協議是一致的。
3、外設連接在各種總線上
相同協議和相同速率的外設連接在一類總線之上。注意,系統中某一種總線并不一定只有一條,每一條總線(注意,不是一種,而是一條)都定了一個地址空間,也就是一個地址命名空間,在這個意義上,cpu訪問的地址x和pci設備的地址x并不是一個地址,因此橋設備必須可以提供一個地址映射機制,可以將一端的地址映射到另一端的y(可以直接等于x,然而意義卻不一樣)。
4、中斷引腳
cpu核心為了可以被外設中斷,它必須有一個中斷引腳。外設為了可以中斷cpu,也必須有一種機制使它和cpu中斷引腳直接或者間接相連接。
4.1、基于硬連線的中斷
外設要想能中斷cpu,最直接的方式是引出一根線,和cpu的唯一的中斷引腳相連,然而cpu只有一個引腳,所以cpu需要在后續的總線周期中查詢是誰發送了中斷信號,因此外設需要有機制告知這個信息,這個信息就是中斷向量號,然而很多設備會共享一個向量號,這就需要cpu在基于中斷向量號的中斷處理程序中遍歷所有的設備進行確認了。
5.協議軟化
早期很多的總線都是并行的,芯片除了片選引腳外,地址線/數據線都是并行的,這樣的話不利于通信協議的更改,因為并行總線的通信協議(總線事務)完全基于時序,而時序是硬件設計時定義的,比如對于地址/數據復用線,第一個總線周期發出地址,然后后續周期發出數據等,這些都是硬連線確定的,另外,并行線路,頻率越高干擾越大,離得越近干擾越大,然而事情卻在向高頻,小型化發展,這明顯是一個矛盾,因此設計出了串行總線,將處理邏輯集中于芯片,總線線路只負責傳輸基于frame的數據,這就是協議軟化,也叫總線事務軟化。當需要更新協議的時候,只需要更換芯片即可,線路無需更改。
5.1、基于消息的中斷
pci/pcie總線使用基于消息的中斷,即msi/msi-x,這種中斷機制無需設備的中斷線引腳,只需要在串行總線發出一個中斷事務,然后會有芯片接管這個事務,這個事務消息中有中斷向量號信息,然后該芯片會代理設備向cpu發出中斷事務,具體如何向cpu轉發設備的中斷,有很多種方式,一種古老的方式用于使用8259的系統中,8259會向cpu的intr引腳發送中斷,然后到cpu查詢向量號的時候8259會將從msi中得到的向量號發給cpu。一種更新的方式是使用apic,msi向一個存儲器地址空間寫一個中斷消息,該地址在pcie橋處被轉換為cpu的存儲空間地址,該地址就是local-apic的映射地址,然后在fsb上發送中斷事務,由于地址被映射到處理器封裝中的local-apic,該事務被local-apic接管,然后local-apic再向處理器核心即cpu發送中斷。這種方式完全由消息事務完成,絲毫不需要任何硬連線。
三、系統軟件相關
系統軟件并不僅僅是操作系統,實際上操作系統并不直接管理硬件。fireware和硬件接口,而操作系統和用戶接口。
1、fireware定義硬連線拓撲
這種fireware和主板硬件接口,在x86平臺上,這種fireware稱為bios,在bios定義了豐富的信息。主板上電后,bios執行,bios中保存了E820映射信息,也就是cpu的地址空間的什么地址映射到什么總線,接下來的一種可能實現是bios根據這些信息檢測并初始化總線設備,實際上是一種遍歷,為各個設備分配基地址,也就是寫入配置空間基地址信息。這些信息由操作系統讀出并使用。(當然也可以將這信息寫死到設備的rom中)
2、操作系統
和用戶接口,操作完全是為了管理用戶進程的,它對硬件的管理完全是基于fireware的。操作系統根據fireware的信息得到主板拓撲信息,設置中斷向量,得到設備的基地址等信息。
附:軟化
不知以太網以及tcp/ip的設計思想有沒有影響主板設計,以太網的802.3設計就是一個串行協議設計的成功例子,tcp/ip的設計也是類似的一個例子,網絡協議的設計幾乎都是串行的,這和計算機早期的并口不同,串口有著簡單性和抗干擾性的優點,這點意義上,雙絞線最終淘汰了并口線,同軸線等...
不管怎樣,串行線路是軟的,而不像并行線路那樣硬,這樣就可以將處理邏輯集中于端點而不是線路本身,比如再也不用定義哪根線是數據準備好信號,那些根線是地址信號了,只需要定義一個frame的格式,然后按照這個格式發送數據就可以了,這樣在串行線路上,甚至都不再區分什么地址線和數據線了,地址和數據都包含在數據包本身了,這樣分層協議和封裝協議就容易設計出來了,芯片本身使用軟件或者硬件處理數據包,和線路沒有關系,正如ipv6的數據包和ipv4的包都可以跑在一條線路上一樣,雖然它們的地址信息一點都不同。
串行線路將更多的事交給了端點的軟件或者硬件,這就解耦了線路和線路載荷。一般意義上,并行線路在低頻率時鐘情況下比串行線路快,然而當這種優勢達到極端時,當時鐘頻率發展到使并行線路不再可以提升性能時反而降低性能時,串行線路取代了并行了線路,此時由于時鐘頻率足夠高,串行線路也已經足夠快了,前仆后繼,善莫大焉!我們的主板將越來越像一個網絡了,實際上,最終,我們的互聯網和主板將歸于一種設計,那就是串行線路連接各端點。人們一直以為軟件處理效率不如硬件直接處理,說不定最終接替摩爾定律的恰恰的軟件的設計思想而不再是單純的硬件,這里的軟件并不是編程意義上的軟件,而是設計意義上的軟件,也就是將處理邏輯集中于端點的設計思想。
笑聲中說一句,串行總線中可以輕松實現中斷的動態配置,操作系統可以參與中斷向量的配置,而在并行線路中,操作系統只能使用fireware的信息。
轉載于:https://blog.51cto.com/dog250/1271081
總結
以上是生活随笔為你收集整理的计算机系统和中断的概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML5的可视化开发工具Maqetta
- 下一篇: java信息管理系统总结_java实现科