第十三章 處理器 Linux可以運行在許多類型的處理器上,本章將給出對它們的簡單描敘。 13.1 X86 省略 13.2 ARM ARM處理器是一種低功耗高 性能 的32位RISC處理器。它在 嵌入式 設備如移動電話和PDA中廣泛使用。共有31個 32位寄存器而其中16個可以在任何模式下
第十三章 處理器
Linux可以運行在許多類型的處理器上,本章將給出對它們的簡單描敘。
13.1 X86
省略
13.2 ARM
ARM處理器是一種低功耗高
性能的32位RISC處理器。它在
嵌入式設備如移動電話和PDA中廣泛使用。共有31個 32位寄存器而其中16個可以在任何模式下看到。它的指令為簡單的加載與存儲指令(從內存中加載某個值, 執行完操作後再將其放回內存)。ARM一個有趣的特點是它所有的指令都帶有條件。例如你可以
測試某個 寄存器的值但是直到下次你使用同一條件時進行測試時,你才能有條件的執行這些指令。另一個特征是可以 在加載數值的同時進行算術和移位操作。它可以在幾種模式下操作,包括通過使用SWI(軟件中斷)指令從 用戶模式進入的系統模式。
ARM處理器是一個綜合體,ARM公司自身並不制造微處理器。它們是有ARM的合作伙伴(Intel或LSI)制造。 ARM還允許將其他處理器通過協處理器接口進行緊耦合。它還包括幾種內存管理單元的變種,包括簡單的 內存保護到復雜的頁面層次。
13.3 Alpha A
XP處理器
Alpha AXP是一種64位的load/store類型的RISC處理器,其設計目標就是高速度。它所有的寄存器都是64位; 還擁有32個整數寄存器和32個浮點數寄存器。第31個整數與浮點數寄存器被用來進行空操作。對它們讀將 得到0,對它們的寫沒有什麼影響。所有的指令都是32位並且內存操作不是寫就是讀。這種結構允許不同的 實現。
不能對內存中數值的操作,所有的數據操作都是在寄存器中完成。所以如果你試圖遞增一個內存中的計數器 則必須先讀入寄存器,修改後再寫回。指令之間的相互操作僅僅通過其中一個對寄存器和內存位置的寫入而 另一個從寄存器或內存位置讀出而進行。Alpha AXP處理器的一個有趣的特征是包含可產生標志位的指令。 如測試兩個寄存器中的值是否相等,其結果沒有存放在處理器狀態寄存器中而是放在第3個寄存器裡。初 看起來好象很奇怪,但是刪除對狀態寄存器的依賴關系將更加容易構造一個超標量多發射CPU體系結構。在 不相關寄存器中的指令將不必為從單一狀態寄存器等待而浪費執行時間。缺少對內存的直接操作以及大量 寄存器對多發射結構也有幫助。
Alpha AXP結構使用叫做特權體系庫代碼(PALcode)的一組子程序。此PALcode依賴於特定的操作系統、 Alpha AXP體系的CPU實現以及系統硬件。這些子程序為操作系統提供了上下文切換、中斷、異常和內存 管理原語。它們可以由硬件或者通過CALL_PAL指令來調用。PALcode使用標准的Alpha AXP匯編代碼寫成並 做了一些擴展以提供對底層硬件指令的直接訪問,如內部處理器寄存器。PALcode在一種叫PALmode的特權 模式下執行,此時它將停止一些系統事件的發生並允許PALcode對物理系統硬件進行完全的控制。