Hexagon SDK知識學習

2021-07-06 03:43:25 字數 3075 閱讀 4801

概述一、hexagon sdk入門及開發環境

程式設計師參考資訊

二、hexagon dsp暫存器相關知識

在hexagon 處理器的暫存器組中包含了兩種暫存器,分別稱之為通用暫存器以及控制暫存器,與我們見過的很多dsp類似,通用暫存器適用於通用型別的計算,例如位址的生成以及標量資料向量資料的數學計算。

而在hexagon處理器中,控制暫存器還可以支援特殊用途的處理器特性,例如硬體迴路以及分支**。

通用暫存器:

hexagon處理器一共包含了32個32位的通用暫存器(命名為r0至r31).這些暫存器的用途便是為所有的操作儲存運算元了,他們可以為load/store指令集的位址定址,算數以及布林運算的運算元,向量指令的向量運算元提供儲存服務。

在這些通用暫存器當中,r29-r32被用來支援子程式的呼叫以及程式棧,這些暫存器可以無保留的被子程式呼叫或棧指令改變。在程式設計環境中,r29-r32可以用符號來表示。例如:

sp=add(sp,#-8) //sp是r29的別名

allocfram //更改暫存器r29(sp)以及r30(fp)

call init //更改lr(r31)

下圖顯示了這些別名後的通用暫存器

暫存器對

暫存器在使用時,可以通過定義乙個暫存器對來表示乙個64位的暫存器,例如:

r1:0 =memd(r3) //匯入雙字

r7:6=valignb(r9:8,r7:6,#2) //適量對齊

下圖顯示了暫存器對的結構

控制暫存器:

hexagon處理器包含了一系列的32位的控制暫存器,這些暫存器可以讓我們對處理器中的pc,硬體迴路以及向量分支**進行操作。

與通用暫存器不同,控制暫存器中有些特殊的控制暫存器可用來當做運算元,有時候暫存器可以被轉換成指令從而被用作運算元。例如

r2 = memw(r0++m1) //自動加位址模式(m1)

r9 = pc //讀取當前指標值

lc1 = r3 //設定硬體回路數

注意:當控制暫存器被用來作為暫存器轉移或其他運算元時,運算元必須為暫存器。

下圖也給出了控制暫存器的別名命名規則

可以認為這些控制暫存器用來確定指令編碼過程中的控制暫存器。

暫存器對

控制暫存器同樣可以被定義為暫存器對從而表示乙個64位的暫存器,控制暫存器的湊對使用別名來定義,例如:

c1:0 = r5:4

下圖列出了控制器存器能配對的種類

程式計數器

程式計數器(pc)在程式執行過程中用來指向下乙個指令的位置,它可以通過指令執行來間接修改,不過可以被直接讀取例如:

r7=pc //獲得當前pc值

注意:對程式計數器的寫操作沒有任何效果

迴圈暫存器

hexagon處理器包括兩組迴圈暫存器從而支援硬體迴路,每個硬體迴路由包含了迴圈計數器以及迴圈開始位置的暫存器所實現。迴圈暫存器可以通過loop指令來間接修改,同時我們也可以直接訪問,例如:

loop0(start ,r4) //修改lc0與sa0

lc1 = r22 //獲得loop1的數值

r9=sa1 //獲得loop1的開始位置

下圖定義了迴圈計數器

使用者狀態暫存器

使用者狀態暫存器(usr)可儲存處理器狀態並且維護這一組可被使用者訪問的暫存器。狀態位的設定包含了各種指令可能的結果,特別是當硬體需要提前獲取處理器中可寫的處理器模式,而該模式可被控制暫存器更改時。

例如:

r9:8 = vaddw(r9:8 , r3:2):sat // 向量加字

r6 = usr //獲得saturation 狀態

usr可包含如下的狀態以及控制值

1. cache預取使能

2. cache預取狀態

3. 浮點模式

4. 浮點狀態

5. 硬體迴路配置

6. 溢位

應當注意到,我們如果將使用者控制模式轉換到usr模式,我們不能將其並列至浮點指令中

無論在何時改變使能位,在異常發生影響前,應執行isync指令(這部分內容將在後面第五章講到)

如下列出了全部的使用者模式

分支**暫存器

分支**暫存器(p0-p3)儲存了標量與向量對比計算的結果,例如:

p1 = cmp.eq(r2,r3) //標量對比

if (p1) jump end //跳至位址

r8 = p1 //獲得對比狀態(p1)

p3:0 = p1 //設定比較狀態位(p0-p3)

這四個分支**暫存器可被設定成四倍狀態,此時此四個暫存器被表示成乙個32位的暫存器

Hexagon SDK部分模組架構分析

hexagon sdk部分模組架構分析 hexagon sdk能夠幫助使用者定製和擴充套件對adsp的使用。本文具體講解sdk中比較有代表的性的模組的架構,以便我們更好的學習 研究和使用。audio 音訊框架提供了和音訊硬體互動的埠。音訊框架主要有三部分組成 encoders decoders,pr...

iOS知識學習 iOS入門知識學習(一)

今日開始跟大家一塊學習ios,也順帶這個機會我也從頭開始複習一遍吧。其實,ios學習起來並沒有想象中的那麼困難,只不過是你想要開發ios的話,成本相對比較高吧,在windows裡面裝虛擬機器的時代我是體驗過的,那個開發起來簡直就是苦不堪言啊,那個宕機的速度真是分分鐘的事,reset已經被用的如火純清...

iOS知識學習 iOS入門知識學習(二)

在前一篇文章中主要介紹了ios的作業系統層次 各層次所負責的功能,還有進行ios開發需要掌握的一些基本工具,以及很重要很重要的mvc模式。關於一門開發語言,那個要學習的東西真是太多太多了,這兒我就稍微介紹點基礎的吧。1 當我們建立乙個工程的時候,我們可以看到.h和.m檔案,h檔案裡面建立的物件和方法...