專(zhuān)利名稱(chēng):用于接口連接處理器和協(xié)處理器的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及接口連接(interface),更具體地涉及處理器 與協(xié)處理器的接口連接。
背景技術(shù):
協(xié)處理器經(jīng)常被用于執(zhí)行可以從主或通用處理器上卸載的一個(gè)或 多個(gè)指定操作。因此,允許該處理器和協(xié)處理器之間的有效通信和連 接是重要的。此外,在很多系統(tǒng)中,處理器利用一個(gè)或多個(gè)等級(jí)的高 速緩存通過(guò)減少對(duì)較低速存儲(chǔ)器的訪問(wèn)來(lái)增加系統(tǒng)的效率。
通過(guò)示例的方式來(lái)示出本發(fā)明,但是本發(fā)明不限于附圖所示。附
圖中相同的標(biāo)號(hào)表示相似的部件,附圖中
圖1以框圖的形式示出了根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng);
圖2以框圖的形式示出了根據(jù)一個(gè)實(shí)施例的圖1中的協(xié)處理器
14的一部分;
圖3以框圖的形式示出了根據(jù)一個(gè)實(shí)施例的指令; 圖4以框圖的形式示出了根據(jù)一個(gè)實(shí)施例的指令; 圖5以框圖的形式示出了根據(jù)一個(gè)實(shí)施例的圖1中的存儲(chǔ)器54
的一部分;
圖6以表格形式示出了根據(jù)一個(gè)實(shí)施例的當(dāng)訪問(wèn)圖5的循環(huán)緩沖 器55中的采樣時(shí),圖4的地址偏移量228指向何處;
圖7以框圖形式示出了根據(jù)一個(gè)實(shí)施例的圖1的系統(tǒng)10的存儲(chǔ) 映射;
圖8以表格形式示出了根據(jù)一個(gè)實(shí)施例的示例的指令流;以及圖9以表格形式示出了根據(jù)一個(gè)實(shí)施例的圖8的指令流如何由圖 1的處理器12和協(xié)處理器14產(chǎn)生并執(zhí)行。
本領(lǐng)域的技術(shù)人員應(yīng)該理解,圖中的部件是為了簡(jiǎn)潔和清楚而示 出的,并且不必然地按比例畫(huà)出。例如,圖中一些部件的尺寸相對(duì)于 其他部件可以被放大以有助于提高對(duì)本發(fā)明的實(shí)施例的理解。
具體實(shí)施例方式
參考圖1,在系統(tǒng)10中,保持存儲(chǔ)在存儲(chǔ)器54中、存儲(chǔ)在高速 緩存70中、被處理器12所使用的以及被協(xié)處理器14所使用的信息 之間的一致性是非常重要的。注意到通過(guò)允許協(xié)處理器14直接將處 理器指令插入處理器12的指令解碼路徑,由此可以保證高速緩存70 和存儲(chǔ)器54之間的一致性。因?yàn)樘幚砥?2以與對(duì)待任何其他指令一 樣的方式對(duì)待由協(xié)處理器14插入的指令,而不論這些指令是從何處 得到的(例如,存儲(chǔ)器54 ),所以可以保證高速緩存70和存儲(chǔ)器54 的一致性。協(xié)處理器14產(chǎn)生作為處理器12的標(biāo)準(zhǔn)指令集的一部分的 一個(gè)或多個(gè)指令。協(xié)處理器14可以以任何期望的方式產(chǎn)生這些處理 器指令。例如,可以使用狀態(tài)機(jī)、組合邏輯、或任何其他類(lèi)型的電路 來(lái)確定處理器指令的一個(gè)或多個(gè)部分,而其中一個(gè)或多個(gè)部分可以使 用查詢(xún)表來(lái)確定。協(xié)處理器14可以使用產(chǎn)生指令的任何其他方法。 此外,由協(xié)處理器14產(chǎn)生的指令可以是任何類(lèi)型的指令。
在一個(gè)實(shí)施例中,協(xié)處理器14產(chǎn)生發(fā)送給處理器12執(zhí)行的加載 和存儲(chǔ)指令。處理器12因此對(duì)存儲(chǔ)器54執(zhí)行加栽和存儲(chǔ)指令,這要 求檢索協(xié)處理器14執(zhí)行一個(gè)或多個(gè)選擇的協(xié)處理器功能所需的數(shù) 據(jù)。處理器12可以包括旁路控制電路28,其在協(xié)處理器啟動(dòng)加栽指 令期間被處理器12使用,以將數(shù)據(jù)從存儲(chǔ)器54直接傳送至協(xié)處理器 14,而不將所檢索到的數(shù)據(jù)存儲(chǔ)在寄存器24中。類(lèi)似的,處理器12 可以在協(xié)處理器啟動(dòng)存儲(chǔ)指令期間使用旁路控制電路28,以將數(shù)據(jù) 從協(xié)處理器14直接傳送到存儲(chǔ)器54,而不從寄存器24檢索將被存 儲(chǔ)的數(shù)據(jù)。在一個(gè)實(shí)施例中,高速緩存電路不知道何時(shí)發(fā)生旁路。該旁路僅允許了一條使數(shù)據(jù)直接來(lái)自/去往協(xié)處理器14而不是來(lái)自/去 往處理器寄存器24的路徑。注意在該實(shí)施例中,不論加載或存儲(chǔ)指 令是否由協(xié)處理器14產(chǎn)生,高速緩存70都以相同的方式操作。因 此,以電路和處理時(shí)間的最小花費(fèi)來(lái)保持高速緩存70、存儲(chǔ)器54、 處理器12和協(xié)處理器14之間的一致性。然而,如果期望保持高速緩 存一致性,可替換的實(shí)施例可以不具有旁路或可以以不同的方式來(lái)處 理旁路。
參考圖1,在一個(gè)實(shí)施例中,協(xié)處理器14通過(guò)導(dǎo)線44監(jiān)視處理 器12的程序計(jì)數(shù)器值17,以確定何時(shí)程序計(jì)數(shù)器值17落入預(yù)定的 地址范圍內(nèi)。在一個(gè)實(shí)施例中,處理器12的程序計(jì)數(shù)器17位于指令 地址產(chǎn)生器16中,而對(duì)于替換實(shí)施例來(lái)說(shuō),其可以位于處理器12的 任何地方。在一個(gè)實(shí)施例中,協(xié)處理器14使用基地址寄存器122來(lái) 存儲(chǔ)基地址,基地址可以與程序計(jì)數(shù)器值17的選擇位進(jìn)行比較(例 如通過(guò)比較器120),從而確定程序計(jì)數(shù)器值17是否落入預(yù)定范圍 內(nèi)。在可選實(shí)施例中,基地址寄存器122和比較器120可以位于系統(tǒng) 10的任何地方(例如,在處理器12中),以及信號(hào)可以從比較器 120提供至協(xié)處理器14以指示何時(shí)發(fā)生匹配(即,程序計(jì)數(shù)器值17 在預(yù)定范圍內(nèi))。
如果處理器12的程序計(jì)數(shù)器值17不在預(yù)定范圍內(nèi),則協(xié)處理器 14什么都不作,并繼續(xù)監(jiān)視程序計(jì)數(shù)器值17。然而,如果處理器12 的程序計(jì)數(shù)器值17在預(yù)定范圍內(nèi),則協(xié)處理器14使用程序計(jì)數(shù)器值 17來(lái)選擇多個(gè)將被執(zhí)行的操作中的一個(gè)(見(jiàn)圖7)??蛇x實(shí)施例可以 僅具有一個(gè)將被協(xié)處理器14執(zhí)行的操作,因此可以使用程序計(jì)數(shù)器 值17作為使能器而不是作為使能器和選擇器。
參考圖7,程序計(jì)數(shù)器地址17的地址"A"使協(xié)處理器14選擇 協(xié)處理器功能1;程序計(jì)數(shù)器地址17的地址"A+100"使協(xié)處理器 14選擇協(xié)處理器功能2;以及程序計(jì)數(shù)器地址17的地址"A+ 150" 使協(xié)處理器14選擇協(xié)處理器功能3??蛇x實(shí)施例可以使用任何數(shù)量 的協(xié)處理器功能。此外,協(xié)處理器功能(例如,1、 2、和3)可以是任何功能。可以被使用的 一 些公知的協(xié)處理器功能是濾波功能、
Verterbi算法、快速傅立葉變換、以及相關(guān)功能。然而,代替或除了 這些示例,可以使用其他協(xié)處理器功能。注意,系統(tǒng)存儲(chǔ)器映射中從
"A"至"A + 300"的地址空間為協(xié)處理器14保留并且不具有對(duì)應(yīng) 的物理存儲(chǔ)電路(即,存儲(chǔ)器54和協(xié)處理器14不具有對(duì)應(yīng)于從
"A"至"A + 300"的地址空間的存儲(chǔ)電路)。在大多數(shù)的現(xiàn)有技術(shù) 的系統(tǒng)中,從程序計(jì)數(shù)器17所指向的地址位置獲取下一個(gè)指令。然 后將所獲取的指令存儲(chǔ)在指令流水線20中,直到其被處理器12執(zhí) 行。注意,可替換的實(shí)施例可以不具有指令流水線20,但是取而代 之的是立即執(zhí)行所獲取的指令。注意,處理器12使用執(zhí)行單元26和 寄存器24來(lái)執(zhí)行大部分的指令。
在示出的實(shí)施例中,當(dāng)程序計(jì)數(shù)器寄存器17包含從"A"至"A + 300"的值時(shí),協(xié)處理器14被使能,并使用程序計(jì)數(shù)器值17以確 定要執(zhí)行哪個(gè)協(xié)處理器功能。參考圖9,協(xié)處理器14然后例如通過(guò) 執(zhí)行空操作(NOP)指令或乘法累積(MAC)指令來(lái)使用功能電路 102去執(zhí)行協(xié)處理器功能。協(xié)處理器14也在內(nèi)部從處理器12的指令 集中產(chǎn)生一個(gè)或多個(gè)指令,然后指令從協(xié)處理器14傳送至處理器12
(例如,通過(guò)指令導(dǎo)線42)。注意,由協(xié)處理器14產(chǎn)生的處理器12 指令沒(méi)有被存儲(chǔ)在由處理器12所產(chǎn)生的指令獲取地址處,取而代之 的是由協(xié)處理器在內(nèi)部產(chǎn)生。協(xié)處理器14可以以任何期望的方式產(chǎn) 生這些處理器12指令。例如,處理器12指令的一個(gè)或多個(gè)部分可以 使用狀態(tài)機(jī)、組合邏輯或其他類(lèi)型的電路來(lái)確定,而一個(gè)或多個(gè)部分 可以使用查詢(xún)表來(lái)確定。在圖2示出的實(shí)施例中,協(xié)處理器14使用 指令產(chǎn)生器106來(lái)產(chǎn)生將通過(guò)導(dǎo)線42被傳送至處理器12的處理器指 令。注意在一個(gè)實(shí)施例中,由協(xié)處理器14產(chǎn)生并提供給處理器12的 指令是處理器12的標(biāo)準(zhǔn)指令集的一部分,并且不是與處理器/協(xié)處理 器接口相關(guān)的特定指令。
通過(guò)產(chǎn)生由處理器12來(lái)執(zhí)行的指令,協(xié)處理器14可以使用處理 器12的任何處理能力,并且可以指引一序列的處理器12運(yùn)算來(lái)輔助執(zhí)行協(xié)處理器算法。以該方式,由于去除了多余的協(xié)處理器硬件,所
以協(xié)處理器14可以被簡(jiǎn)化,并且相反,協(xié)處理器14可以指引處理器 12的執(zhí)行活動(dòng)以支持期望的協(xié)處理功能。在許多協(xié)處理操作中,需 要來(lái)自存儲(chǔ)器54的一致性數(shù)據(jù)以實(shí)現(xiàn)協(xié)處理功能。在示出的實(shí)施例 中,通過(guò)產(chǎn)生由處理器12執(zhí)行的標(biāo)準(zhǔn)處理器12加載和存儲(chǔ)指令,且 因?yàn)樘幚砥?2代表協(xié)處理器14來(lái)執(zhí)行正常的存儲(chǔ)器操作碼轉(zhuǎn)移,所 以實(shí)現(xiàn)了數(shù)據(jù)一致性。此外,由于當(dāng)執(zhí)行任何其他標(biāo)準(zhǔn)加載或存儲(chǔ)指 令時(shí),這些存儲(chǔ)器存取看來(lái)好像與處理器12所產(chǎn)生的正常存儲(chǔ)器存 取一樣,所以保證了存儲(chǔ)器管理邏輯的適當(dāng)操作。協(xié)處理器12也可 以利用任何其他的處理器12資源,例如乘法單元、以及除法單元、 浮點(diǎn)單元、或任何可以通過(guò)執(zhí)行標(biāo)準(zhǔn)處理器12指令而被使用的資 源。
參考圖2和圖3,在一個(gè)實(shí)施例中,指令產(chǎn)生器106具有用于產(chǎn) 生操作碼字段202的操作碼字段產(chǎn)生器110,用于產(chǎn)生一個(gè)或多個(gè)地 址偏移量字段208的地址偏移量字段產(chǎn)生器112,用于產(chǎn)生一個(gè)或多 個(gè)即時(shí)字段210的即時(shí)字段產(chǎn)生器114,用于產(chǎn)生其他字段206的其 他指令字段產(chǎn)生器118,以及用于產(chǎn)生寄存器字段204的寄存器字段 產(chǎn)生器118。因?yàn)橹噶钭侄?04、 206、 208和210可以是可選的,或 對(duì)于一些實(shí)施例是不被使用的,所以可替換實(shí)施例可以不實(shí)現(xiàn)產(chǎn)生器 112、 114、 116和118。
參考圖2~圖4,在一個(gè)實(shí)施例中,指令產(chǎn)生器106產(chǎn)生用于處 理器12的加載指令、存儲(chǔ)指令、以及"從子程序返回"指令。對(duì)于 "從子程序返回"指令,操作碼字段產(chǎn)生器IIO產(chǎn)生用于操作碼字段 202的從子程序返回操作碼,并且因?yàn)椴恍枰噶钭侄?04、 206、 208和210,所以沒(méi)有使用電路112、 114、 116和118。對(duì)于加栽或 存儲(chǔ)指令,操作碼字段產(chǎn)生器110產(chǎn)生加載/存儲(chǔ)操作碼222,寄存器 字段產(chǎn)生器118產(chǎn)生源/目的地寄存器字段224和基地址字段226, 以及地址偏移量字段產(chǎn)生器114產(chǎn)生地址偏移量字段228。在示出的 實(shí)施例中,對(duì)于加載或存儲(chǔ)指令,因?yàn)椴恍枰噶钭侄?06和210,
9所以電路114和116沒(méi)有被使用。
圖5和圖6示出了當(dāng)協(xié)處理器14被用來(lái)對(duì)存儲(chǔ)在存儲(chǔ)器54中的 循環(huán)緩沖中的數(shù)據(jù)采樣執(zhí)行操作時(shí),由協(xié)處理器14中的地址偏移量 字段產(chǎn)生器112所產(chǎn)生的地址值的示例。圖5示出了被用作循環(huán)緩沖 55的存儲(chǔ)器54的一部分在地址位置"B,,存儲(chǔ)采樣1、在地址位置
"B+1"存儲(chǔ)采樣2、在地址位置"B + 2"存儲(chǔ)采樣3、以及在地址 位置"B + 3"存儲(chǔ)采樣4。參考圖4,協(xié)處理器14產(chǎn)生用于操作碼 字段222的加栽操作碼,產(chǎn)生作為基地址寄存器字段226的地址
"B",以及產(chǎn)生作為地址偏移量字段228的"0"。然后通過(guò)指令 導(dǎo)線42從協(xié)處理器14傳送加栽指令并插入指令流水線20。然后處 理器12使用解碼電路22來(lái)對(duì)該插入的加載指令進(jìn)行解碼。該插入的 加載指令然后被處理器12執(zhí)行。
該插入的加栽指令使得處理器12訪問(wèn)存儲(chǔ)器54以獲取地址位置 "B"處的采樣1。然后所獲取的采樣1或者被加載在協(xié)處理器14中 (例如,在寄存器104中),或者既加載到協(xié)處理器14又加栽到處 理器12中(例如在寄存器24中)。注意,插入的指令的格式與由處 理器12所執(zhí)行的任何其他加栽指令的格式相同。在示出的實(shí)施例 中,除了使用旁路控制電路28,被協(xié)處理器14插入的加載指令對(duì)于 處理器12來(lái)說(shuō)是透明的。在插入加栽指令期間可以使用旁路控制電 路28來(lái)將從存儲(chǔ)器54獲取的數(shù)據(jù)直接加栽到協(xié)處理器14中,而不 是加栽到處理器寄存器24中。協(xié)處理器14可以使用控制信號(hào)(例如 控制信號(hào)76之一)來(lái)向處理器12的控制器30表明響應(yīng)于執(zhí)行加 栽指令的處理器12,旁路控制電路28應(yīng)當(dāng)被用來(lái)將獲取的數(shù)據(jù)直接 傳送到協(xié)處理器14??刂齐娐?0可以使用一個(gè)或多個(gè)控制信號(hào)29 來(lái)控制旁路控制電路28。
參考圖4,注意對(duì)于一個(gè)實(shí)施例,如果旁路控制電路28將加栽/ 存儲(chǔ)數(shù)據(jù)直接傳送至協(xié)處理器14或從協(xié)處理器14直接傳送加載/存 儲(chǔ)數(shù)據(jù)并旁路處理器12,則可以不使用插入加載/存儲(chǔ)指令的源/目的 地寄存器字段224。然而,對(duì)于替換實(shí)施例,如果旁路控制電路28將加載/存儲(chǔ)數(shù)據(jù)直接發(fā)送至協(xié)處理器14或從協(xié)處理器14直接傳送 加載/存儲(chǔ)數(shù)據(jù),同時(shí)也發(fā)送至處理器12或從處理器12傳送,則插 入加載/存儲(chǔ)指令的源/目的地寄存器字段224仍然被使用。
繼續(xù)圖5和圖6中的示例,協(xié)處理器14產(chǎn)生用于操作碼字段 222的加載操作碼,產(chǎn)生作為基地址寄存器字段226的地址"B", 以及產(chǎn)生作為地址偏移量字段228的"1"。該加載指令然后被從協(xié) 處理器14發(fā)送,并通過(guò)指令導(dǎo)線42插入指令流水線20。處理器12 然后使用解碼電路22來(lái)對(duì)該插入的加載指令進(jìn)行解碼。該插入的加 載指令然后被處理器12執(zhí)行,并且從存儲(chǔ)器54獲取采樣2并加栽到 寄存器104中。
繼續(xù)圖5和圖6中的示例,協(xié)處理器14產(chǎn)生用于操作碼字段 222的加載操作碼,產(chǎn)生作為基地址寄存器字段226的地址"B", 以及產(chǎn)生作為地址偏移量字段228的"2"。該加載指令然后被從協(xié) 處理器14傳送并通過(guò)指令導(dǎo)線42插入指令流水線20。然后處理器 12使用解碼電路22對(duì)該插入加栽指令進(jìn)行解碼。該插入加栽指令然 后被處理器12執(zhí)行,并且從存儲(chǔ)器54中獲取采樣3并加載到寄存器 104中。
繼續(xù)圖5和圖6中的示例,協(xié)處理器14產(chǎn)生用于操作碼字段 222的加載操作碼,產(chǎn)生作為基地址寄存器字段226的地址"B", 以及產(chǎn)生作為地址偏移量字段228的"3"。該加載指令然后被從協(xié) 處理器14傳送并通過(guò)指令導(dǎo)線42插入指令流水線20。然后處理器 12使用解碼電路22對(duì)該插入加載指令進(jìn)行解碼。該插入加栽指令然 后被處理器12執(zhí)行,并且從存儲(chǔ)器54中獲取采樣4并加栽到寄存器 104中。
協(xié)處理器14使用功能電路102 (見(jiàn)圖2)來(lái)執(zhí)行一個(gè)或多個(gè)對(duì)采 樣1~4的操作。然后所獲得的計(jì)算值被存儲(chǔ)在寄存器104中。協(xié)處 理器14產(chǎn)生用于操作碼字段222的存儲(chǔ)操作碼,產(chǎn)生作為基地址寄 存器字段226的地址"C",以及產(chǎn)生作為地址偏移量字段228的 "0"。該存儲(chǔ)指令然后從協(xié)處理器14被傳送并通過(guò)指令導(dǎo)線42插入指令流水線20。然后處理器12使用解碼電路22以對(duì)該插入存儲(chǔ) 指令進(jìn)行解碼。該插入存儲(chǔ)指令然后被處理器12執(zhí)行,并且使用旁 路控制電路28從寄存器104中獲取值1并存儲(chǔ)在存儲(chǔ)器54中??商?換實(shí)施例可以使協(xié)處理器14在處理器12中源寄存器(例如寄存器 24之一)中存儲(chǔ)值1,從而不需要旁路控制電路28。到此,對(duì)循環(huán) 緩沖器中存儲(chǔ)的輸入采樣集合執(zhí)行協(xié)處理器操作的第一迭代已經(jīng)被完
成。以類(lèi)似的方式執(zhí)行第二迭代,不同僅在于,在用于加載指令的地 址偏移量字段228中的偏移量為1, 2, 3和0,以及在用于存儲(chǔ)指令 的地址偏移量字段228中的偏移量為1。以類(lèi)似的方式執(zhí)行第三迭 代,不同僅在于,在用于加栽指令的地址偏移量字段228中的偏移量 為2, 3, 0和1,以及在用于存儲(chǔ)指令的地址偏移量字段228中的偏 移量為2。
圖8以表格的形式示出了根據(jù)一個(gè)實(shí)施例的示例的指令流。在該 示出的實(shí)施例中,程序計(jì)數(shù)器17的內(nèi)容列在左欄中,以及對(duì)應(yīng)的將 被處理器12所執(zhí)行的指令列在右欄中。注意在示出的采樣指令流 中,前兩個(gè)指令由處理器12從存儲(chǔ)器54獲取。接下來(lái)的指令集由協(xié) 處理器14產(chǎn)生(見(jiàn)圖2中的電路106),并通過(guò)指令導(dǎo)線42被直接 傳送到指令流水線20。列表中最后的指令集再次由處理器12從存儲(chǔ) 器54獲取。注意,協(xié)處理器14可以被用來(lái)產(chǎn)生任何期望類(lèi)型的供處 理器12執(zhí)行的指令。
在圖8中,在程序計(jì)數(shù)器值A(chǔ)-75處獲取至子程序指令的分支。 該至子程序指令的分支可以被用來(lái)"調(diào)用"特定協(xié)處理器功能,類(lèi)似 于"調(diào)用"軟件功能的作用。該分支的目的地落在由協(xié)處理器14執(zhí) 行特定功能所使用的地址的范圍內(nèi)。地址A+100對(duì)應(yīng)于期望的協(xié)處 理器功能,功能2,并且用于向協(xié)處理器提供信號(hào)來(lái)開(kāi)始期望的功 能。當(dāng)標(biāo)準(zhǔn)處理器12指令被協(xié)處理器14提供至處理器12時(shí),處理 器12將繼續(xù)增加程序計(jì)數(shù)器以支持由協(xié)處理器執(zhí)行期望的功能2。 一旦完成期望的功能,當(dāng)程序計(jì)數(shù)器值達(dá)到表示期望功能已完成的A + 140時(shí),協(xié)處理器14提供"從子程序返回"指令。處理器12然后返回到地址A-74處的先前的指令流。
圖9以表格的形式示出了根據(jù)一個(gè)實(shí)施例的、圖8的指令流是如 何被圖1的處理器12和協(xié)處理器14產(chǎn)生并執(zhí)行的??商鎿Q的實(shí)施例 可以以任何期望的方式產(chǎn)生并執(zhí)行指令。圖9中示出的示例僅用于描 述一個(gè)可能的替換例。
圖9示出了當(dāng)協(xié)處理器14同時(shí)執(zhí)行兩個(gè)功能產(chǎn)生未來(lái)的處理 器12指令和執(zhí)行協(xié)處理器操作時(shí),將由處理器12執(zhí)行的指令。左欄 示出了將被處理器12執(zhí)行的指令。箭頭表示協(xié)處理器14已經(jīng)產(chǎn)生并 提供給處理器12供處理器12執(zhí)行的指令。中間欄示出了被協(xié)處理器 14產(chǎn)生的、被傳送至處理器12供處理器12執(zhí)行的指令。右欄示出 了被協(xié)處理器14同時(shí)執(zhí)行的協(xié)處理器操作。因此,在協(xié)處理器14使 用功能電路102來(lái)同時(shí)執(zhí)行其自己的指令或執(zhí)行其自己的操作時(shí),協(xié) 處理器14可以使用指令產(chǎn)生電路106產(chǎn)生用于處理器12的指令。
注意,通過(guò)使用協(xié)處理器14來(lái)產(chǎn)生作為處理器12的指令集的一 部分的標(biāo)準(zhǔn)指令并將標(biāo)準(zhǔn)指令插入指令流水線20,處理器12所使用 的保持一個(gè)或多個(gè)高速緩存70的緩存一致性的正常機(jī)制仍然可以被 使用,而不需要額外的電路或復(fù)雜性。因此,協(xié)處理器14可以將指 令插入處理器12的指令流水線20以使處理器12執(zhí)行至協(xié)處理器14 中的寄存器104的加載和存儲(chǔ)以及來(lái)自協(xié)處理器14中的寄存器104 的加載和存儲(chǔ)。因?yàn)樘幚砥?2正在以與處理器12執(zhí)行從存儲(chǔ)器54 (見(jiàn)圖1)獲取的加載和存儲(chǔ)指令相同的方式來(lái)執(zhí)行由協(xié)處理器14 所產(chǎn)生的加載和存儲(chǔ)指令,所以處理器12在保持高速緩存一致性方 面沒(méi)有或幾乎沒(méi)有執(zhí)行成本。
附圖描述
圖1示出了根據(jù)一個(gè)實(shí)施例的數(shù)據(jù)處理系統(tǒng)10。在所示出的實(shí) 施例中,系統(tǒng)10包括通過(guò)導(dǎo)線58雙向耦合到協(xié)處理器14的處理器 12。在一個(gè)實(shí)施例中,導(dǎo)線58包括指令導(dǎo)線42、地址導(dǎo)線44、控制 導(dǎo)線58、地址導(dǎo)線46和數(shù)據(jù)導(dǎo)線48。在一個(gè)實(shí)施例中,系統(tǒng)10還 包括雙向耦合到總線32的存儲(chǔ)控制器52和其他電路56。存儲(chǔ)控制器52雙向耦合到一個(gè)或多個(gè)存儲(chǔ)器,例如存儲(chǔ)器54。存儲(chǔ)器54可 以是能夠存儲(chǔ)信息的任何類(lèi)型的電路或存儲(chǔ)介質(zhì)。在替換實(shí)施例中, 存儲(chǔ)控制器52可以耦合到多個(gè)存儲(chǔ)器,這些存儲(chǔ)器可以是相同類(lèi)型 的存儲(chǔ)器,也可以是不同類(lèi)型的存儲(chǔ)器(例如非易失性、動(dòng)態(tài)隨即存 取存儲(chǔ)器等)。協(xié)處理器14也通過(guò)導(dǎo)線78雙向耦合到總線32。
在一個(gè)實(shí)施例中,處理器12包括指令地址產(chǎn)生器16、數(shù)據(jù)地址 產(chǎn)生器18、指令流水線20、解碼電路22、多個(gè)寄存器24、執(zhí)行單元 26、旁路控制電路28、控制電路30、以及高速緩存70??商鎿Q實(shí)施 例在處理器12中可以使用更多、更少或不同的電路部分。在一個(gè)實(shí) 施例中,控制電路30通過(guò)導(dǎo)線76雙向耦合到協(xié)處理器14、通過(guò)導(dǎo) 線77雙向耦合到指令地址產(chǎn)生器16、通過(guò)導(dǎo)線79雙向耦合到數(shù)據(jù) 地址產(chǎn)生器18、通過(guò)導(dǎo)線81雙向耦合到指令流水線20、通過(guò)導(dǎo)線 83雙向耦合到解碼電路22、通過(guò)導(dǎo)線85雙向耦合到寄存器24、通 過(guò)導(dǎo)線87雙向耦合到寄存器24和執(zhí)行單元26、被耦合為通過(guò)導(dǎo)線 29向旁路控制電路28提供控制信號(hào)、以及通過(guò)導(dǎo)線89雙向耦合到 高速緩存70。
在一個(gè)實(shí)施例中,協(xié)處理器14通過(guò)地址導(dǎo)線44雙向耦合到指令 地址產(chǎn)生器16、通過(guò)指令導(dǎo)線42雙向耦合到指令流水線20、通過(guò)地 址導(dǎo)線46雙向耦合到數(shù)據(jù)地址產(chǎn)生器18、通過(guò)數(shù)據(jù)導(dǎo)線48雙向耦 合到寄存器24、以及通過(guò)數(shù)據(jù)導(dǎo)線50雙向耦合到旁路控制電路28。 在一個(gè)實(shí)施例中,旁路控制電路28通過(guò)導(dǎo)線91雙向耦合到寄存器 24。在一個(gè)實(shí)施例中,數(shù)據(jù)地址產(chǎn)生器18通過(guò)導(dǎo)線36雙向耦合到總 線32,以及指令流水線20通過(guò)導(dǎo)線38雙向耦合到總線32。在一個(gè) 實(shí)施例中,高速緩存70通過(guò)導(dǎo)線74雙向耦合到執(zhí)行單元26。在一 個(gè)實(shí)施例中,指令地址產(chǎn)生器16包括程序計(jì)數(shù)器17。在一個(gè)實(shí)施例 中,程序計(jì)數(shù)器17是指向當(dāng)前執(zhí)行指令的寄存器。在一個(gè)實(shí)施例 中,控制電路30包括指令獲取電路19。
系統(tǒng)10的可替換實(shí)施例可以使用電路的不同模塊或部分來(lái)實(shí)現(xiàn) 處理器12。圖1示出的處理器12的實(shí)施例僅是許多個(gè)可能的處理器
1412實(shí)施例中的一個(gè)。例如,處理器12的可替換實(shí)施例可以不具有高 速緩存或不具有多級(jí)高速緩存、可以不具有指令流水線或不具有期望 深度的指令流水線、可以具有多個(gè)執(zhí)行單元(例如26)等。此外, 處理器12的結(jié)構(gòu)可以以任何期望的方式布置。其他電路56可以包括 任何可以想到的期望電路。存取控制器52可以是任何類(lèi)型的電路。 在一個(gè)實(shí)施例中,控制器52可以包括DMA (直接存儲(chǔ)器存取)電 路。在一個(gè)實(shí)施例中,圖1示出的電路可以形成在單個(gè)集成電路上。 在可替換實(shí)施例中,圖1示出的電路可以形成在多個(gè)集成電路上。系 統(tǒng)10可以被用于任何期望的應(yīng)用。
圖2示出了圖1的協(xié)處理器14的一部分的一個(gè)實(shí)施例。在圖2 所示的實(shí)施例中,協(xié)處理器14包括控制電路100、功能電路102、寄 存器104、以及指令產(chǎn)生器106。在一個(gè)實(shí)施例中,控制電路100包 括比較器120,其被耦合為從地址信號(hào)44接收第一地址值,以及被 耦合為從基地址寄存器122接收第二地址值。比較器120將這兩個(gè)接 收到的地址值進(jìn)行比較并確定它們是否匹配??刂齐娐?00雙向耦合 到功能電路102、雙向耦合到寄存器104、以及雙向耦合到指令產(chǎn)生 器106。在一個(gè)實(shí)施例中,指令產(chǎn)生器106包括操作碼字段產(chǎn)生器 110、地址偏移量字段產(chǎn)生器112、即時(shí)字段產(chǎn)生器114、另一指令字 段產(chǎn)生器116、以及寄存器字段產(chǎn)生器118。注意,在指令產(chǎn)生器電 路106中的電路110、 112、 114、 116和118可以被用來(lái)產(chǎn)生圖3的 指令200中的對(duì)應(yīng)字段。
仍然參考圖2,指令產(chǎn)生器106耦合到指令導(dǎo)線42用于提供一 個(gè)或多個(gè)指令。寄存器104耦合到數(shù)據(jù)導(dǎo)線50以接收或提供數(shù)據(jù)。 寄存器104還雙向耦合到功能電路102。協(xié)處理器14的可替換實(shí)施 例可以使用電路的不同模塊或部分來(lái)實(shí)現(xiàn)協(xié)處理器14的各個(gè)部分。 圖2中示出的協(xié)處理器14的實(shí)施例僅是協(xié)處理器14的多個(gè)可能的實(shí) 施例中的一個(gè)。例如,功能電路102可以被實(shí)施為執(zhí)行任何類(lèi)型或任 何數(shù)量的期望功能。
圖3示出了可以由協(xié)處理器14 (見(jiàn)圖2中的指令產(chǎn)生器106)產(chǎn)生的指令200的一個(gè)實(shí)施例。圖3中示出的該指令200的實(shí)施例包括識(shí)別該指令的操作碼字段202、表示該指令中涉及的一個(gè)或多個(gè)寄存器的一個(gè)或多個(gè)寄存器字段204 (在可替換實(shí)施例中可以實(shí)現(xiàn)或不實(shí)現(xiàn))、 一個(gè)或多個(gè)其他字段206 (在可替換實(shí)施例中可以實(shí)現(xiàn)或不實(shí)現(xiàn))并具有任何期望的功能、用于表示地址偏移量的一個(gè)或多個(gè)地址偏移量字段208 (在可替換實(shí)施例中可以實(shí)現(xiàn)或不實(shí)現(xiàn))、以及用于提供作為該指令的一部分的即時(shí)值的一個(gè)或多個(gè)即時(shí)字段210 (在可替換實(shí)施例中可以實(shí)現(xiàn)或不實(shí)現(xiàn))??商鎿Q實(shí)施例可以使用任何期望數(shù)量的這些字段和這些字段的組合或任何期望的額外字段(未示出)。
圖4示出了可以由協(xié)處理器14的一些實(shí)施例產(chǎn)生的指令220的一個(gè)實(shí)施例。圖4示出的指令220的實(shí)施例包括標(biāo)識(shí)該指令是加載指令還是存儲(chǔ)指令的加載/存儲(chǔ)操作碼字段222、用于指定用于加載指令的目的地寄存器或用于存儲(chǔ)指令的源寄存器的源/目的地寄存器字段224、提供用于存儲(chǔ)器存取的基地址的基地址寄存器字段226、以及用于提供存儲(chǔ)器存取(見(jiàn)圖1中的存儲(chǔ)器54)的地址偏移量的地址偏移量字段228??商鎿Q的實(shí)施例可以使用任何期望數(shù)量的這些字段或這些字段的組合。
圖5示出了被用于實(shí)現(xiàn)循環(huán)緩沖器55的圖l的存儲(chǔ)器54的一部
分的一個(gè)實(shí)施例。
圖6以表格的形式示出了根據(jù)一個(gè)實(shí)施例的當(dāng)訪問(wèn)圖5的循環(huán)緩沖器55中的采樣時(shí),圖4的地址偏移量字段228指向何處。在示出的實(shí)施例中,采樣1~4分別表示已經(jīng)存儲(chǔ)在圖l的存儲(chǔ)器54中的地址位置B到B + 3中的輸入數(shù)據(jù)。諸如圖4中所示的加載指令220的多個(gè)加載指令可以由協(xié)處理器14產(chǎn)生并被插入處理器12的指令流水線20中(見(jiàn)圖2)。處理器12然后可以執(zhí)行由協(xié)處理器14產(chǎn)生的加載指令220。由處理器12執(zhí)行的該加載指令220可以加栽處理器12和/或協(xié)處理器14中的寄存器(例如,圖2中的寄存器104)。協(xié)處理器14的功能電路102 (見(jiàn)圖2)然后可以被用來(lái)對(duì)輸入數(shù)據(jù)執(zhí)行一個(gè)或多個(gè)計(jì)算或操作。
仍然參考圖6, 一旦由協(xié)處理器14確定結(jié)果值或多個(gè)結(jié)果值,則協(xié)處理器14可以使用指令產(chǎn)生電路106 (見(jiàn)圖2)來(lái)產(chǎn)生一個(gè)或多個(gè)存儲(chǔ)指令220。這些存儲(chǔ)指令220可以通過(guò)指令導(dǎo)線42被提供至處理器12的指令流水線。由處理器12執(zhí)行的存儲(chǔ)指令220可以將值1~3從處理器12中的寄存器和/或協(xié)處理器14中的寄存器(例如圖2中的寄存器104)傳送到存儲(chǔ)器54 (見(jiàn)圖1)。然后存儲(chǔ)器54中的位置C至C + 2存儲(chǔ)該結(jié)果值1 ~ 3。
以上已經(jīng)描述了圖7~9。
在上述說(shuō)明書(shū)中,已經(jīng)參考特定實(shí)施例描述了本發(fā)明。然而,本領(lǐng)域的技術(shù)人員應(yīng)該明白,在不偏離在下面權(quán)利要求中闡明的本方面的范圍的情況下,可以對(duì)本發(fā)明作出各種修改和改變。因此,說(shuō)明書(shū)和附圖應(yīng)被理解為示意性的而不是限制性的,并且所有這樣的改變都應(yīng)包括在本發(fā)明的保護(hù)范圍內(nèi)。
上面描述了關(guān)于特定實(shí)施例的好處、優(yōu)點(diǎn)、以及解決問(wèn)題的方案。然而,這些好處、優(yōu)點(diǎn)、解決問(wèn)題的方案以及使任何好處、優(yōu)點(diǎn)、以及解決方案能夠?qū)崿F(xiàn)或變的更顯著的任何部件不被解釋為是任何權(quán)利要求或所有權(quán)利要求的決定性的、必須的、必需的特征或部件。如在此所使用的術(shù)語(yǔ)"包括"或其任何其他變形都旨在覆蓋非排他的包括,從而包括部件列表的過(guò)程、方法、物件、或裝置不僅包括這些部件,而且包括沒(méi)有明白列出或這些過(guò)程、方法、物件或裝置固有的部件。1. 一種用于將協(xié)處理器接口連接到處理器的方法,所述處理器解碼并執(zhí)行第一指令集,所述方法包括
所述協(xié)處理器產(chǎn)生所述第一指令集的至少一個(gè)指令;以及所述協(xié)處理器將所產(chǎn)生的所述第一指令集的至少一個(gè)指令提供至所述處理器用于解碼并執(zhí)行。
2. 根據(jù)聲明1所述的方法,進(jìn)一步包括所述處理器解碼并執(zhí)行所產(chǎn)生的所述至少一個(gè)指令。
3. 根據(jù)聲明1所述的方法,其中所述協(xié)處理器產(chǎn)生所述第一指令集的所述至少一個(gè)指令包括
從在所迷第一指令集中定義的多個(gè)操作碼中選擇操作碼;以及提供所選擇的操作碼作為所產(chǎn)生的至少一個(gè)指令的至少一部分。
4. 根據(jù)聲明3所述的方法,其中所述協(xié)處理器產(chǎn)生所述第一指令集的所述至少一個(gè)指令包括
計(jì)算對(duì)應(yīng)于所選擇的操作碼的至少一個(gè)操作碼字段;以及提供所選擇的操作碼和所計(jì)算的操作碼字段作為所產(chǎn)生的至少一個(gè)指令的至少一部分。
5. 根據(jù)聲明4所述的方法,其中計(jì)算所述至少一個(gè)操作碼字段包括計(jì)算地址偏移量字段。
6. 根據(jù)聲明4所述的方法,其中計(jì)算所述至少一個(gè)操作碼字段包
括計(jì)算即時(shí)字段。
7. 根據(jù)聲明4所述的方法,其中計(jì)算所述至少一個(gè)操作碼字段包括計(jì)算寄存器字段。
8. 根據(jù)聲明1所述的方法,其中所述協(xié)處理器產(chǎn)生所述至少一個(gè)指令是運(yùn)行時(shí)間執(zhí)行的。
9. 根據(jù)聲明1所述的方法,其中所產(chǎn)生的至少一個(gè)指令不存儲(chǔ)在由所述處理器產(chǎn)生的指令獲取地址處。
10. 根據(jù)聲明1所述的方法,其中所述協(xié)處理器在將所產(chǎn)生的至少一個(gè)指令提供至所述處理器之前,等待預(yù)定長(zhǎng)度的時(shí)間間隔。
1811. 根據(jù)聲明1所述的方法,其中所述協(xié)處理器產(chǎn)生所述至少一
個(gè)指令包括
所述協(xié)處理器提供多個(gè)指令,所述多個(gè)指令中的每個(gè)指令在所述第一指令集中,其中所述多個(gè)指令中的指令序列由所述協(xié)處理器在運(yùn)
行時(shí)間確定。
12. 根據(jù)聲明11所述的方法,其中所述協(xié)處理器從指令列表中選擇所述多個(gè)指令中的每個(gè)指令。
13. —種用于將協(xié)處理器接口連接到處理器的方法,所述處理器解碼并執(zhí)行第 一指令集,所述第 一指令集包括存儲(chǔ)指令和加載指令,所述方法包括
所述協(xié)處理器選擇對(duì)應(yīng)于所述存儲(chǔ)指令或所述加栽指令的操作
碼;
所述協(xié)處理器計(jì)算對(duì)應(yīng)于所選擇的操作碼的地址偏移量;所述協(xié)處理器將所選擇的操作碼和所計(jì)算的地址偏移量作為產(chǎn)生的指令提供給所述處理器;以及
所述處理器解碼并執(zhí)行所產(chǎn)生的指令。
14. 根據(jù)聲明13所述的方法,其中,所選擇的操作碼對(duì)應(yīng)于所述加栽指令,所述方法進(jìn)一步包括
響應(yīng)于所述處理器執(zhí)行所產(chǎn)生的指令,所述協(xié)處理器接收數(shù)據(jù)值;以及
所述協(xié)處理器使用所述數(shù)據(jù)值來(lái)執(zhí)行協(xié)處理器功能。
15. 根據(jù)聲明14所述的方法,其中所選擇的操作碼對(duì)應(yīng)于所述存儲(chǔ)指令,所述方法進(jìn)一步包括
所述協(xié)處理器執(zhí)行協(xié)處理器功能并得到結(jié)果值;以及所述協(xié)處理器提供將被存儲(chǔ)在由所產(chǎn)生的指令表示的位置處的所述結(jié)果值。
16. 根據(jù)聲明13所述的方法,其中所產(chǎn)生的指令不存儲(chǔ)在由所述處理器產(chǎn)生的指令獲取地址處。
17. 根據(jù)聲明13所述的方法,進(jìn)一步包括所述協(xié)處理器選擇對(duì)應(yīng)于所述存儲(chǔ)指令或所述加載指令的第二操
作碼;
所述協(xié)處理器計(jì)算對(duì)應(yīng)于所選擇的第二操作碼的第二地址偏移
量;
所述協(xié)處理器將所選擇的第二操作碼和所計(jì)算的第二地址偏移量作為第二產(chǎn)生的指令提供給所述處理器;以及
所述處理器解碼并執(zhí)行所述第二產(chǎn)生的指令,所述第二產(chǎn)生的指令不存儲(chǔ)在由所述處理器產(chǎn)生的指令獲取地址處。
18. —種數(shù)據(jù)處理系統(tǒng),包括
處理器,具有用于解碼并執(zhí)行指令集的指令的解碼和執(zhí)行電路,以及具有用于產(chǎn)生獲取地址的指令獲取電路;以及
協(xié)處理器,耦合到所述處理器,所述協(xié)處理器具有用于產(chǎn)生所述指令集的至少一個(gè)指令的指令產(chǎn)生電路;
其中,在第一操作模式中,所述處理器解碼并執(zhí)行存儲(chǔ)在由所述處理器產(chǎn)生的所述獲取地址處的所述指令集的指令,以及在第二操作模式中,所述處理器解碼并執(zhí)行由所述協(xié)處理器的所述指令產(chǎn)生電路產(chǎn)生的所述指令集的指令。
19. 根據(jù)聲明18所述的數(shù)據(jù)處理系統(tǒng),其中由所述協(xié)處理器的所述指令產(chǎn)生電路產(chǎn)生的所述指令集的所述指令不存儲(chǔ)在由所述處理器產(chǎn)生的獲取地址處。
20. 根據(jù)聲明19所述的數(shù)據(jù)處理系統(tǒng),其中響應(yīng)于由所述處理器的所述指令獲取電路產(chǎn)生的獲取地址,提供由所述指令產(chǎn)生電路產(chǎn)生的所述指令集的所述指令。附加聲明以支持SC14982TH。
1. 一種用于通過(guò)協(xié)處理器為處理器實(shí)現(xiàn)濾波器的方法,所述方 法包括
所述協(xié)處理器產(chǎn)生用于加載多個(gè)輸入采樣的多個(gè)加載指令; 將所產(chǎn)生的所述多個(gè)加載指令提供至所述處理器; 所述處理器解碼并執(zhí)行所產(chǎn)生的所述多個(gè)加栽指令; 響應(yīng)于所述處理器解碼并執(zhí)行所產(chǎn)生的所述多個(gè)加載指令,所述 協(xié)處理器接收所述多個(gè)輸入采樣;以及
所述協(xié)處理器使用所述多個(gè)輸入采樣來(lái)執(zhí)行濾波器操作。
2. 根據(jù)聲明1所述的方法,其中所述處理器解碼并執(zhí)行指令集, 以及其中所產(chǎn)生的多個(gè)加載指令在所述指令集內(nèi)。
3. 根據(jù)聲明1所述的方法,其中所產(chǎn)生的多個(gè)加栽指令不存儲(chǔ)在 由所述處理器產(chǎn)生的獲取地址處。
4. 根據(jù)聲明1所述的方法,進(jìn)一步包括
響應(yīng)于使用所述多個(gè)輸入采樣執(zhí)行濾波器操作,所述協(xié)處理器獲 取計(jì)算值;
所述協(xié)處理器產(chǎn)生存儲(chǔ)指令;
所述協(xié)處理器將所產(chǎn)生的存儲(chǔ)指令提供給所述處理器;以及 所述處理器解碼并執(zhí)行所產(chǎn)生的存儲(chǔ)指令以存儲(chǔ)所述計(jì)算值。
5. 根據(jù)聲明4所述的方法,其中所產(chǎn)生的存儲(chǔ)指令不存儲(chǔ)在由所 述處理器產(chǎn)生的獲取地址處。
6. 根據(jù)聲明4所述的方法,其中所述處理器解碼并執(zhí)行指令集, 以及其中所產(chǎn)生的存儲(chǔ)指令在所述指令集中。
7. 根據(jù)聲明1所述的方法,其中所述協(xié)處理器產(chǎn)生所述多個(gè)加載 指令包括
計(jì)算用于所述多個(gè)加載指令的每個(gè)加載指令的地址偏移量字段。
8. 根據(jù)聲明7所述的方法,其中計(jì)算用于所述多個(gè)加栽指令的每 個(gè)加載指令的所述地址偏移量字段是基于至少一個(gè)濾波器特性而執(zhí)行9. 根據(jù)聲明8所述的方法,其中所述至少一個(gè)濾波器特性選自包括濾波器操作類(lèi)型、濾波器長(zhǎng)度、輸入/輸入采樣的數(shù)量、以及抽頭數(shù)量的組。
10. 根據(jù)聲明1所述的方法,其中所述協(xié)處理器基于所述濾波器操作動(dòng)態(tài)地確定將被產(chǎn)生的所述多個(gè)加栽指令。
11. 根據(jù)聲明1所述的方法,進(jìn)一步包括
所述協(xié)處理器產(chǎn)生用于加載多個(gè)濾波器系數(shù)的多個(gè)第二加載指
令;
將所產(chǎn)生的所述多個(gè)第二加載指令提供給所述處理器;所述處理器解碼并執(zhí)行所產(chǎn)生的所述多個(gè)第二加栽指令;以及響應(yīng)于所述處理器解碼并執(zhí)行所產(chǎn)生的所述多個(gè)第二加栽指令,
所述協(xié)處理器接收多個(gè)濾波器系數(shù);以及
所述協(xié)處理器使用所述多個(gè)輸入采樣和所述多個(gè)濾波器系數(shù)來(lái)執(zhí)
行所述濾波器操作。
12. 根據(jù)聲明1所述的方法,其中由所述協(xié)處理器實(shí)現(xiàn)的所述濾波器包括FIR濾波器。
13. —種用于通過(guò)協(xié)處理器為處理器實(shí)現(xiàn)濾波器的方法,所述方法包括
確定所述濾波器的至少一個(gè)特性,所述濾波器的所述至少一個(gè)特性選自包括濾波器類(lèi)型、所述濾波器長(zhǎng)度、以及所述濾波器的當(dāng)前狀態(tài)的組;
所述協(xié)處理器基于所述濾波器的所述至少一個(gè)特性產(chǎn)生指令序列,其中產(chǎn)生所述指令序列包括使用所述濾波器的所述至少 一個(gè)特性計(jì)算所述指令序列中的每個(gè)指令的地址偏移量字段;
所述協(xié)處理器將所產(chǎn)生的所述指令序列提供給所述處理器;以及
所述處理器解碼并執(zhí)行所產(chǎn)生的所述指令序列。
14. 根據(jù)聲明13所述的方法,其中所產(chǎn)生的所述指令序列包括至少一個(gè)產(chǎn)生的加載指令,其中,響應(yīng)于所述處理器解碼并執(zhí)行所產(chǎn)生的加載指令,所述協(xié)處理器接收輸入采樣。15. 根據(jù)聲明14所述的方法,進(jìn)一步包括所述協(xié)處理器使用所述輸入采樣來(lái)執(zhí)行濾波器操作。
16. 根據(jù)聲明14所述的方法,其中所產(chǎn)生的指令序列包括至少一個(gè)產(chǎn)生的存儲(chǔ)指令,其中,響應(yīng)于所述處理器解碼并執(zhí)行所產(chǎn)生的所述存儲(chǔ)指令,存儲(chǔ)由所述協(xié)處理器計(jì)算出的輸出值。
17. 根據(jù)聲明13所述的方法,進(jìn)一步包括
所述協(xié)處理器執(zhí)行濾波器操作以獲得計(jì)算值;以及其中所產(chǎn)生的所述指令序列包括至少一個(gè)產(chǎn)生的存儲(chǔ)指令,其中所述處理器解碼并執(zhí)行所述產(chǎn)生的存儲(chǔ)指令以存儲(chǔ)由所述協(xié)處理器提供的所述計(jì)算值。
18. 根據(jù)聲明13所述的方法,其中產(chǎn)生所述指令序列包括使用所述濾波器的多個(gè)濾波器特性來(lái)計(jì)算所述指令序列中的每個(gè)指令的所述地址偏移量字段。
19. 一種數(shù)據(jù)處理系統(tǒng),包括
協(xié)處理器,用于為處理器實(shí)現(xiàn)濾波器,所述協(xié)處理器包括
指令產(chǎn)生器,用于產(chǎn)生用于加栽多個(gè)輸入采樣的多個(gè)加載指令、用于產(chǎn)生用于存儲(chǔ)多個(gè)計(jì)算值的多個(gè)存儲(chǔ)指令、以及用于將所產(chǎn)生的所述多個(gè)加載指令和所產(chǎn)生的所述多個(gè)存儲(chǔ)指令提供給所述處理器,所述指令產(chǎn)生器包括地址偏移量字段產(chǎn)生器,其用于計(jì)算用于每個(gè)所產(chǎn)生的多個(gè)加載指令和用于每個(gè)所產(chǎn)生的多個(gè)存儲(chǔ)指令的地址偏移量;以及
功能電路,用于使用所述多個(gè)輸入采樣執(zhí)行濾波器操作以獲得所述多個(gè)計(jì)算值;以及處理器,耦合到所述協(xié)處理器,所述處理器包括解碼和執(zhí)行電路,其用于解碼并執(zhí)行所產(chǎn)生的所述多個(gè)加栽指令以將所述輸入采樣提供給所述協(xié)處理器,以及用于解碼并執(zhí)行所產(chǎn)生的所述多個(gè)存儲(chǔ)指令以存儲(chǔ)所述多個(gè)計(jì)算值。
20. 根據(jù)聲明19所述的數(shù)據(jù)處理系統(tǒng),其中所產(chǎn)生的多個(gè)加載指令和所產(chǎn)生的多個(gè)存儲(chǔ)指令不存儲(chǔ)在由所述處理器產(chǎn)生的獲取地址處。附加聲明以支持SC14983TH。
1. 一種用于將處理器接口連接到協(xié)處理器的方法,所述協(xié)處理器能夠執(zhí)行多個(gè)協(xié)處理器操作,所述方法包括
所述處理器執(zhí)行從目標(biāo)地址獲取的指令;
響應(yīng)于所述處理器執(zhí)行從所述目標(biāo)地址獲取的所述指令,所述協(xié)處理器啟動(dòng)所述多個(gè)協(xié)處理器操作中的一個(gè)協(xié)處理器操作,其中,所述多個(gè)協(xié)處理器操作中的所述一個(gè)協(xié)處理器操作是基于所述目標(biāo)地址的至少一部分來(lái)選擇的。
2. 根據(jù)聲明1所述的方法,進(jìn)一步包括
在所述處理器執(zhí)行從所述目標(biāo)地址獲取的所述指令之前,所述處理器對(duì)導(dǎo)致到所述目標(biāo)地址的流改變的指令進(jìn)行解碼。
3. 根據(jù)聲明2所述的方法,其中導(dǎo)致到所述目標(biāo)地址的流改變的指令是分支指令。
4. 根據(jù)聲明2所述的方法,其中到所述目標(biāo)地址的流改變的指令是至子程序指令的分支。
5. 根據(jù)聲明4所述的方法,進(jìn)一步包括
所述協(xié)處理器在啟動(dòng)所述多個(gè)協(xié)處理器操作中的所述一個(gè)協(xié)處理器操作之后完成所述多個(gè)協(xié)處理器操作中的所述一個(gè)協(xié)處理器操作;將從子程序返回指令提供給所述處理器;以及所述處理器解碼并執(zhí)行所述從子程序返回指令。
6. 根據(jù)聲明i所述的方法,進(jìn)一步包括
響應(yīng)于從所述目標(biāo)地址獲取的所述指令,所述協(xié)處理器將第一指令提供給所述處理器;以及
所述處理器執(zhí)行并解碼所述第 一指令。
7. 根據(jù)聲明6所述的方法,進(jìn)一步包括
所述處理器執(zhí)行從在所述目標(biāo)地址之后的第二指令地址獲取的第二指令;
響應(yīng)于從所述第二指令地址獲取的所述第二指令,所述協(xié)處理器將第二指令提供給所述處理器;以及
24所述處理器執(zhí)行并解碼所述第二指令。
8. 根據(jù)聲明7所述的方法,其中所迷第二指令包括流指令的改變。
9. 根據(jù)聲明8所述的方法,其中所述第二指令導(dǎo)致到所述第一指令地址之后的地址的流的改變。
10. 根據(jù)聲明1所述的方法,其中所述多個(gè)協(xié)處理器操作中的每個(gè)協(xié)處理器操作對(duì)應(yīng)于至少一個(gè)指令地址,所述至少一個(gè)指令地址不存取物理存儲(chǔ)器陣列位置。
11. 一種將處理器接口連接到協(xié)處理器的方法,所述協(xié)處理器能夠執(zhí)行多個(gè)協(xié)處理器操作,所述方法包括
所述處理器從存儲(chǔ)器獲取多個(gè)指令;
所述處理器執(zhí)行所述多個(gè)指令,其中所述多個(gè)指令的第一指令包括具有目標(biāo)地址的分支指令;
所述處理器執(zhí)行從所述目標(biāo)地址獲取的指令;
響應(yīng)于所述處理器執(zhí)行從所述目標(biāo)地址獲取的所述指令,所述協(xié)處理器向所述處理器提供至少一個(gè)指令;以及
所述處理器解碼并執(zhí)行所述至少 一個(gè)指令。
12. 根據(jù)聲明11所述的方法,進(jìn)一步包括
使用所述目標(biāo)地址選擇多個(gè)協(xié)處理器操作中的一個(gè)協(xié)處理器操作,其中由所述協(xié)處理器提供給所述處理器的所述至少一個(gè)指令包括
加載或存儲(chǔ)執(zhí)行所選擇的協(xié)處理器操作所使用的數(shù)據(jù)的指令。
13. 根據(jù)聲明11所述的方法,其中所述分支指令包括至子程序指令的分支,以及由所述協(xié)處理器提供給所述處理器的至少一個(gè)指令包括從子程序返回指令。
14. 根據(jù)聲明11所述的方法,其中執(zhí)行所述協(xié)處理器向所述處理器提供所述至少一個(gè)指令,使得響應(yīng)于由所述處理器產(chǎn)生的指令獲取地址,所述至少一個(gè)指令的每個(gè)指令被提供給所述處理器。
15. 根據(jù)聲明14所述的方法,其中所述指令獲取地址落在地址的預(yù)定范圍內(nèi),所述方法進(jìn)一步包括所述協(xié)處理器基于所述目標(biāo)指令落在所述地址的預(yù)定范圍中的位置來(lái)選擇所述多個(gè)協(xié)處理器操作中的一個(gè)協(xié)處理器操作。
16. 根據(jù)聲明15所述的方法,其中由所述協(xié)處理器提供至所述處理器的所述至少一個(gè)指令包括到第二目標(biāo)地址的流指令的改變,所述第二目標(biāo)地址位于所述地址的預(yù)定范圍之外。
17. 根據(jù)聲明15所述的方法,其中所述地址的預(yù)定范圍不對(duì)應(yīng)于任何物理存儲(chǔ)位置。
18. —種數(shù)據(jù)處理系統(tǒng),包括
處理器,具有用于解碼并執(zhí)行指令集的指令的解碼和執(zhí)行單元,以及具有用于產(chǎn)生獲取地址的指令獲取電路;以及
協(xié)處理器,耦合到所述處理器,所述協(xié)處理器具有指令產(chǎn)生電路,其用于產(chǎn)生所述指令集中的指令并在所述獲取地址落在地址的預(yù)定范圍中時(shí)將所產(chǎn)生的指令提供至所述處理器。
19. 根據(jù)聲明18所述的數(shù)據(jù)處理系統(tǒng),其中所述協(xié)處理器進(jìn)一步包括
功能電路,用于執(zhí)行所述至少一個(gè)協(xié)處理器操作,在由所述指令獲取電路產(chǎn)生的獲取地址落在所述地址的預(yù)定范圍中時(shí),所述協(xié)處理器啟動(dòng)所述至少一個(gè)協(xié)處理器操作,所述協(xié)處理器基于所述獲取地址落在所述地址的預(yù)定范圍內(nèi)的位置來(lái)選擇所述至少一個(gè)協(xié)處理器操作。
20. 根據(jù)聲明18所述的數(shù)據(jù)處理系統(tǒng),進(jìn)一步包括基寄存器地址,用于存儲(chǔ)所述地址的預(yù)定范圍的基地址;以及比較器,用于將獲取地址與所述基地址進(jìn)行比較。
21. 根據(jù)聲明18所述的數(shù)據(jù)處理系統(tǒng),其中所述地址的預(yù)定范圍不對(duì)應(yīng)于任何物理存儲(chǔ)位置。
權(quán)利要求
1. 一種用于將協(xié)處理器接口連接到處理器的方法,所述處理器解碼并執(zhí)行第一指令集,所述方法包括所述協(xié)處理器產(chǎn)生所述第一指令集的至少一個(gè)指令;以及所述協(xié)處理器將所產(chǎn)生的所述第一指令集的所述至少一個(gè)指令提供至所述處理器用于解碼并執(zhí)行。
2. —種用于將協(xié)處理器接口連接到處理器的方法,所述處理器解 碼并執(zhí)行第一指令集,所述第一指令集包括存儲(chǔ)指令和加載指令,所 述方法包括所述協(xié)處理器選擇對(duì)應(yīng)于所述存儲(chǔ)指令或所述加載指令的操作碼;所述協(xié)處理器計(jì)算對(duì)應(yīng)于所選擇的操作碼的地址偏移量; 所述協(xié)處理器將所選擇的操作碼和所計(jì)算的地址偏移量作為產(chǎn)生 的指令提供給所述處理器;以及所述處理器解碼并執(zhí)行所產(chǎn)生的指令。
3. —種數(shù)據(jù)處理系統(tǒng),包括處理器,具有用于解碼并執(zhí)行指令集的指令的解碼和執(zhí)行電路, 以及具有用于產(chǎn)生獲取地址的指令獲取電路;以及協(xié)處理器,耦合到所述處理器,所述協(xié)處理器具有用于產(chǎn)生所述 指令集的至少一個(gè)指令的指令產(chǎn)生電路;其中,在第一操作模式中,所述處理器解碼并執(zhí)行存儲(chǔ)在由所述 處理器產(chǎn)生的所述獲取地址處的所述指令集的指令,以及在第二操作 模式中,所述處理器解碼并執(zhí)行由所述協(xié)處理器的所述指令產(chǎn)生電路 產(chǎn)生的所述指令集的指令。
4. 一種用于通過(guò)協(xié)處理器為處理器實(shí)現(xiàn)濾波器的方法,所述方 法包括所述協(xié)處理器產(chǎn)生用于加載多個(gè)輸入采樣的多個(gè)加栽指令; 將所產(chǎn)生的多個(gè)加載指令提供至所述處理器;所述處理器解碼并執(zhí)行所產(chǎn)生的多個(gè)加載指令; 響應(yīng)于所述處理器解碼并執(zhí)行所產(chǎn)生的所述多個(gè)加載指令,所述 協(xié)處理器接收所述多個(gè)輸入采樣;以及所述協(xié)處理器使用所述多個(gè)輸入采樣來(lái)執(zhí)行濾波器操作。
5. —種用于通過(guò)協(xié)處理器為處理器實(shí)現(xiàn)濾波器的方法,所述方法 包括確定所述濾波器的至少一個(gè)特性,所述濾波器的所述至少一個(gè)特 性選自包括濾波器類(lèi)型、濾波器長(zhǎng)度、以及所述濾波器的當(dāng)前狀態(tài)的 組;所述協(xié)處理器基于所述濾波器的所述至少一個(gè)特性產(chǎn)生指令序 列,其中產(chǎn)生所述指令序列包括使用所述濾波器的所述至少 一 個(gè)特性 來(lái)計(jì)算所述指令序列中的每個(gè)指令的地址偏移量字段;所述協(xié)處理器將所產(chǎn)生的所述指令序列提供給所述處理器;以及所述處理器解碼并執(zhí)行所產(chǎn)生的所述指令序列。
6. —種數(shù)據(jù)處理系統(tǒng),包括協(xié)處理器,用于為處理器實(shí)現(xiàn)濾波器,所述協(xié)處理器包括指令產(chǎn)生器,用于產(chǎn)生用于加載多個(gè)輸入采樣的多個(gè)加載指 令、用于產(chǎn)生用于存儲(chǔ)多個(gè)計(jì)算值的多個(gè)存儲(chǔ)指令、以及用于將 所產(chǎn)生的所述多個(gè)加載指令和所產(chǎn)生的所述多個(gè)存儲(chǔ)指令提供給 所述處理器,所述指令產(chǎn)生器包括地址偏移量字段產(chǎn)生器,用于 計(jì)算用于所產(chǎn)生的所述多個(gè)加載指令的每一個(gè)和用于所產(chǎn)生的所 述多個(gè)存儲(chǔ)指令的每一個(gè)的地址偏移量;以及功能電路,用于使用所述多個(gè)輸入采樣執(zhí)行濾波器操作以獲 得所述多個(gè)計(jì)算值;以及 處理器,耦合到所述協(xié)處理器,所述處理器包括解碼和執(zhí)行電 路,用于解碼并執(zhí)行所產(chǎn)生的所述多個(gè)加載指令以將所述輸入采樣提 供給所述協(xié)處理器,以及用于解碼并執(zhí)行所產(chǎn)生的所述多個(gè)存儲(chǔ)指令 以存儲(chǔ)所述多個(gè)計(jì)算值。
7. —種用于將處理器接口連接到協(xié)處理器的方法,所述協(xié)處理器能夠執(zhí)行多個(gè)協(xié)處理器操作,所述方法包括 所述處理器執(zhí)行從目標(biāo)地址獲取的指令;響應(yīng)于所述處理器執(zhí)行從所述目標(biāo)地址獲取的所述指令,所述協(xié) 處理器啟動(dòng)所述多個(gè)協(xié)處理器操作中的一個(gè)協(xié)處理器操作,其中,所 述多個(gè)協(xié)處理器操作中的所述一個(gè)協(xié)處理器操作是基于所述目標(biāo)地址 的至少一部分來(lái)選擇的。
8. —種將處理器接口連接到協(xié)處理器的方法,所述協(xié)處理器能夠 執(zhí)行多個(gè)協(xié)處理器操作,所述方法包括所述處理器從存儲(chǔ)器獲取多個(gè)指令;所述處理器執(zhí)行所述多個(gè)指令,其中所述多個(gè)指令的第 一指令包 括具有目標(biāo)地址的分支指令;所述處理器執(zhí)行從所述目標(biāo)地址獲取的指令; 響應(yīng)于所述處理器執(zhí)行從所述目標(biāo)地址獲取的所述指令,所述協(xié) 處理器提供至少一個(gè)指令至所述處理器;以及 所述處理器解碼并執(zhí)行所述至少一個(gè)指令。
9. 一種數(shù)據(jù)處理系統(tǒng),包括處理器,具有用于解碼并執(zhí)行指令集的指令的解碼和執(zhí)行電路, 以及具有用于產(chǎn)生獲取地址的指令獲取電路;以及協(xié)處理器,耦合到所述處理器,所述協(xié)處理器具有指令產(chǎn)生電 路,其用于產(chǎn)生所述指令集的指令,并在所述獲取地址落在地址的預(yù) 定范圍中時(shí)將所產(chǎn)生的指令提供至所述處理器。
全文摘要
協(xié)處理器(14)可以被用于執(zhí)行可以從主或通用處理器(12)卸載的一個(gè)或多個(gè)特定操作。允許該處理器(12)和協(xié)處理器(14)之間的有效通信和連接是重要的。在一個(gè)實(shí)施例中,協(xié)處理器(14)產(chǎn)生并提供指令(200,220)至處理器(12)中的指令流水線(20)。因?yàn)閰f(xié)處理器(14)產(chǎn)生的指令是處理器的標(biāo)準(zhǔn)指令集的一部分,所以容易保持高速緩存(70)一致性。同樣,協(xié)處理器(14)中的電路(102)可以對(duì)數(shù)據(jù)執(zhí)行操作,而協(xié)處理器(14)中的電路(106)同時(shí)產(chǎn)生處理器指令(200,220)。
文檔編號(hào)G06F15/00GK101479712SQ200780024086
公開(kāi)日2009年7月8日 申請(qǐng)日期2007年4月24日 優(yōu)先權(quán)日2006年6月27日
發(fā)明者K·B·泰勒, W·C·莫耶 申請(qǐng)人:飛思卡爾半導(dǎo)體公司