處理器架構 (七) armv4v5v6 架構參考手冊(3) VFP架構

VFP簡介

  • 包括內容
VFP 編程模型
VFP 指令集
VFP 尋址模型
  • VFP 架構的定義
矢量浮點(VFP)體系結構是ARM®體系結構的協處理器擴展。
  • VFP架構 的作用
向量運算 // 在計算機學科中,向量代表一個有序的數表
  • VFP架構相關標準
VFP 基本 服從 IEEE754
VFP 不完全兼容 754,如果要完全兼容,需要軟件庫例程的擴充.
VFP不完全兼容 754 的原因
	在某些環境中,並非754中的每個操作都是必需的
  • VFP架構分層
硬件實現 和 支持代碼 // 同級
硬件無法處理 trapped floating-point exceptions,所以這種情況乾脆就產生一個異常.//(未定義的指令異常)
在異常處理函數中,調用 *支持代碼* ,在該支持代碼中,將現場傳送給 應用程序軟件,然後應用程序軟件處理這個異常.

編程模型

  • VFP寄存器
	通用寄存器
		VFP有32個通用寄存器,每個寄存器都能保存一個單精度浮點數或一個32位整數。
			在該體系結構的D變體中,這些寄存器還可以成對使用,以容納多達16個雙精度浮點數。
	系統寄存器 // 還有三個或更多系統寄存器: // FPEXC寄存器和任何其他系統寄存器的剩餘位是子架構定義的,通常用於VFP實現的硬件和軟件組件之間的內部通信(見第C1-6頁的硬件和軟件實現)。
		FPSID是隻讀的。可以讀取它來確定正在使用VFP體系結構的哪個實現。
		FPSCR提供所有用戶級別的狀態和控制。狀態位保存比較結果和浮點異常的累積標誌。提供控制位以選擇舍入選項和向量長度/跨距,並啓用浮點異常陷阱。
		FPEXC包含一些用於系統級狀態和控制的位。
  • CP10與CP11寄存器 // 相當於 控制寄存器
VFP體系結構的設計完全符合ARM協處理器體系結構。
所有VFP指令都是ARM通用協處理器指令(CDP、LDC、MCR、MRC和STC)的特例,使用協處理器1011。
通常,協處理器10用於單精度指令,協處理器11用於雙精度指令。
VFP被CP10和CP11中的寄存器控制
  • 指令集
	•將浮點值從內存加載到寄存器中,並將浮點值存儲到內存中。
		其中一些指令允許傳輸多個寄存器值,提供與ARM LDM和STM指令等效的浮點值。
		除其他用途外,此類指令可用於加載和存儲浮點值的短向量。

	•直接在VFP和ARM通用寄存器之間傳輸32位值。
	
	•直接在VFP系統寄存器和ARM通用寄存器之間傳輸32位值。
	
	•加、減、乘、除,取浮點寄存器值的平方根。
		這些指令既可用於短向量,也可用於單個浮點值。

	•在寄存器之間複製浮點值。
		在此過程中,符號位可以反轉或清除(或保持不變),提供否定和絕對值指令以及簡單的拷貝。所有這些指令也可用於短向量。
	
	•對浮點值和短向量執行乘法-累加組合操作,爲乘法、求反、加法和減法的常見序列提供節省空間的等價物。
	
	•執行單精度值、雙精度值、無符號32位整數和兩個補符號32位整數之間的轉換。
	
	•將寄存器中的浮點值相互比較或與零進行比較。

  • 異常
	VFP體系結構支持IEEE754標準中定義的所有五種浮點異常:
		• Invalid Operation
		• Division by Zero
		• Overflow
		• Underflow
		• Inexact

		VFPv2體系結構增加了對 輸入非規範浮點異常 的支持,如浮點異常中所述。

配置:
	可以通過 在FPSCR中設置適當的控制位來選擇 是否 跟蹤該異常.
	如果跟蹤,則硬件一頓操作,並且最後PC被設置爲異常向量表中的地址.
	如果不跟蹤,則硬件一頓其他操作,但是最後沒有設置PC.
發佈了283 篇原創文章 · 獲贊 41 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章