本公開涉及計(jì)算機(jī)存儲(chǔ)器的領(lǐng)域,更具體而言涉及關(guān)于被配置為解決或防止存儲(chǔ)器訪問冒險(xiǎn)的存儲(chǔ)器系統(tǒng)的技術(shù)。
背景技術(shù):
各種計(jì)算機(jī)程序需要在訪問存儲(chǔ)器時(shí)處理冒險(xiǎn)(hazard)。一般而言,當(dāng)兩個(gè)操作訪問同一存儲(chǔ)器地點(diǎn)時(shí),計(jì)算系統(tǒng)應(yīng)當(dāng)確保訪問以正確的順序發(fā)生。各種算法使用常常被迭代執(zhí)行的存儲(chǔ)器操作的序列。例如,錯(cuò)誤控制碼、加密和各種方程求解算法通常使用復(fù)雜的矩陣,對(duì)于這樣的矩陣,必須以用于各種操作的指定的序列來執(zhí)行存儲(chǔ)器訪問。
低密度奇偶校驗(yàn)(ldpc)碼是錯(cuò)誤控制碼的一個(gè)示例,并且被用于經(jīng)潛在地有噪聲的信道發(fā)送信息。例如,wimax和lte標(biāo)準(zhǔn)利用ldpc碼用于數(shù)據(jù)信道。ldpc通常使用被稱為“h矩陣”的奇偶校驗(yàn)矩陣來確定傳入的代碼塊的構(gòu)成。將ldpc編碼的消息解碼涉及對(duì)應(yīng)于h矩陣的不同層的迭代的讀/修改/寫操作。為了減少解碼時(shí)間,使這些操作流水線化可能是期望的,但是必須解決存儲(chǔ)器訪問之間的依賴關(guān)系,以正確地將流水線化的操作排序。
技術(shù)實(shí)現(xiàn)要素:
下文給出了被配置為解決或防止訪問冒險(xiǎn)的存儲(chǔ)器以及用于配置或使用這樣的存儲(chǔ)器的技術(shù)的各種實(shí)施例。
在一個(gè)實(shí)施例中,一種裝置包括存儲(chǔ)器和耦接到存儲(chǔ)器或包含在存儲(chǔ)器中的電路系統(tǒng)。在該實(shí)施例中,該電路系統(tǒng)被配置為接收針對(duì)存儲(chǔ)器的存儲(chǔ)器訪問請(qǐng)求序列,其中存儲(chǔ)器訪問請(qǐng)求序列被配置為訪問與矩陣中的條目相關(guān)聯(lián)的地點(diǎn)。在該實(shí)施例中,該電路系統(tǒng)被配置為具有用于存儲(chǔ)器訪問請(qǐng)求序列的存儲(chǔ)器訪問約束。在該實(shí)施例中,該電路系統(tǒng)被配置為以存儲(chǔ)器訪問約束為依據(jù)來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求序列,從而避免與該存儲(chǔ)器訪問請(qǐng)求序列對(duì)應(yīng)的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn)。
在一些實(shí)施例中,該裝置包括被配置為將存儲(chǔ)器訪問序列的執(zhí)行流水線化的流水線電路系統(tǒng)。在這些實(shí)施例中,該電路系統(tǒng)可以被配置為基于存儲(chǔ)器訪問約束來停滯(stall)存儲(chǔ)器訪問請(qǐng)求序列的流水線化的執(zhí)行。存儲(chǔ)器訪問約束可以使用各種格式和編碼中的任何格式和編碼來指定。例如,在一些實(shí)施例中,互鎖信息指示讀/寫指針值。在其它實(shí)施例中,互鎖信息指示令牌值。在一些實(shí)施例中,存儲(chǔ)器訪問請(qǐng)求序列基于用于處理矩陣的行的迭代操作。在一些實(shí)施例中,該電路系統(tǒng)被配置為在不接收指示存儲(chǔ)器訪問冒險(xiǎn)的其它信息(即,沒有描述或表征存儲(chǔ)器訪問冒險(xiǎn)的輔助信息)的情況下防止存儲(chǔ)器訪問冒險(xiǎn)。
在一個(gè)實(shí)施例中,一種方法包括為程序確定存儲(chǔ)器訪問請(qǐng)求序列,以及基于該存儲(chǔ)器訪問序列生成指定存儲(chǔ)器訪問約束的信息,其中該信息可用于避免該存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn)。在該實(shí)施例中,方法還包括使用該信息配置第一電路系統(tǒng),其中第一電路系統(tǒng)被包括在存儲(chǔ)器中或耦接到存儲(chǔ)器。在該實(shí)施例中,在配置之后,第一電路系統(tǒng)可操作以對(duì)存儲(chǔ)器執(zhí)行對(duì)應(yīng)于存儲(chǔ)器訪問序列的存儲(chǔ)器訪問請(qǐng)求同時(shí)避免存儲(chǔ)器訪問冒險(xiǎn),而無需接收指示存儲(chǔ)器訪問冒險(xiǎn)的其它信息。配置第一電路系統(tǒng)可以使用可編程硬件元件(諸如現(xiàn)場(chǎng)可編程門陣列(fpga))或其它可編程硬件來執(zhí)行。此外,配置可以在編譯時(shí)、運(yùn)行程序開始時(shí)或者在程序運(yùn)行時(shí)的各種時(shí)間處執(zhí)行,以適應(yīng)變化的條件或者以改進(jìn)任何數(shù)量的性能度量,諸如吞吐量、延遲、功耗、可靠性、資源利用率、誤比特率(bit-errorrate)等。在一些實(shí)施例中,確定是使用編譯時(shí)執(zhí)行來執(zhí)行的。
在一個(gè)實(shí)施例中,一種方法包括存儲(chǔ)對(duì)應(yīng)于要執(zhí)行的功能的指定的存儲(chǔ)器訪問序列。在該實(shí)施例中,指定的存儲(chǔ)器訪問序列具有第一存儲(chǔ)器訪問約束。在該實(shí)施例中,該方法還包括將指定的存儲(chǔ)器訪問序列重新排序,以創(chuàng)建具有第二、不同的存儲(chǔ)器訪問約束的重新排序的存儲(chǔ)器訪問序列。在該實(shí)施例中,重新排序的存儲(chǔ)器訪問序列可用于訪問存儲(chǔ)器,以執(zhí)行功能。在一些實(shí)施例中,為多個(gè)重新排序的存儲(chǔ)器訪問序列確定性能估計(jì),并且基于性能估計(jì)選擇重新排序的序列中的一個(gè)重新排序的序列。在一些實(shí)施例中,重新排序的序列被用于編譯可用于執(zhí)行功能的程序。
在一個(gè)實(shí)施例中,一種裝置包括存儲(chǔ)器和耦接到存儲(chǔ)器或包括在存儲(chǔ)器中的尋址電路系統(tǒng)。在該實(shí)施例中,尋址電路系統(tǒng)被配置為接收與指定的存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求。在該實(shí)施例中,存儲(chǔ)器訪問請(qǐng)求不包括地址信息。在該實(shí)施例中,尋址電路系統(tǒng)還被配置為將地址指派給用于指定的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問請(qǐng)求。在一些實(shí)施例中,該裝置被配置為使用所指派的地址來執(zhí)行存儲(chǔ)器訪問請(qǐng)求。
在一些實(shí)施例中,本文公開的各種技術(shù)可以提高存儲(chǔ)器訪問吞吐量、降低耦接到互鎖存儲(chǔ)器的設(shè)備的復(fù)雜性和/或允許對(duì)于不同應(yīng)用將互鎖存儲(chǔ)器靈活編程或更新。
附圖說明
當(dāng)結(jié)合以下附圖考慮下面的詳細(xì)描述時(shí),可以獲得對(duì)本公開的更好理解,在附圖中:
圖1a示出了根據(jù)本公開的實(shí)施例的、被配置為執(zhí)行程序的計(jì)算機(jī)系統(tǒng);
圖1b示出了可以實(shí)現(xiàn)本公開的實(shí)施例的、包括兩個(gè)或更多個(gè)計(jì)算機(jī)系統(tǒng)的網(wǎng)絡(luò)系統(tǒng);
圖2a示出了根據(jù)本公開的一個(gè)實(shí)施例的儀器控制系統(tǒng);
圖2b示出了根據(jù)本公開的一個(gè)實(shí)施例的工業(yè)自動(dòng)化系統(tǒng);
圖3a是可以執(zhí)行或利用包括圖形程序的程序的示例性系統(tǒng)的高級(jí)框圖;
圖3b示出了可以執(zhí)行控制和/或模擬功能的示例性系統(tǒng);
圖4是圖1a、1b、2a和2b和3b的計(jì)算機(jī)系統(tǒng)的示例性框圖;
圖5示出了包括具有互鎖存儲(chǔ)器的解碼器的系統(tǒng)的一個(gè)實(shí)施例;
圖6a示出了示例性h矩陣;
圖6b示出了beta矩陣的一個(gè)實(shí)施例,圖6c示出了重新布置的beta矩陣的一個(gè)實(shí)施例;
圖7a和7b分別示出了示例性基線解碼和流水線化的解碼時(shí)間線;
圖8a和8b示出了互鎖存儲(chǔ)器的相應(yīng)實(shí)施例;
圖9示出了互鎖表的一個(gè)實(shí)施例;
圖10示出了用于操作互鎖存儲(chǔ)器的方法的一個(gè)實(shí)施例;
圖11示出了用于使用編譯時(shí)執(zhí)行來生成用于互鎖存儲(chǔ)器的信息的方法的一個(gè)實(shí)施例;
圖12示出了用于確定性能估計(jì)并且基于性能估計(jì)重新布置存儲(chǔ)器訪問序列的方法的一個(gè)實(shí)施例;
圖13示出了用于配置互鎖存儲(chǔ)器的方法的一個(gè)實(shí)施例;
圖14是示出互鎖存儲(chǔ)器的另一個(gè)實(shí)施例的框圖;
圖15a和15b示出了根據(jù)一個(gè)實(shí)施例的示例性beta矩陣、互鎖表以及存儲(chǔ)器訪問操作的流水線化的執(zhí)行;
圖16a和16b示出了用于操作互鎖存儲(chǔ)器的方法的另一個(gè)實(shí)施例;
圖17示出了使用互鎖存儲(chǔ)器執(zhí)行的方法的一個(gè)實(shí)施例;
圖18示出了用于將存儲(chǔ)器訪問序列重新排序的方法的一個(gè)實(shí)施例;
圖19示出了使用自尋址存儲(chǔ)器執(zhí)行的方法的一個(gè)實(shí)施例;以及
圖20示出了用于對(duì)稱矩陣的cholesky因子分解(factorization)的存儲(chǔ)器訪問序列。
雖然本公開容易有各種修改和可替代形式,但是其具體實(shí)施例在附圖中作為示例示出并且在本文中被詳細(xì)描述。然而,應(yīng)當(dāng)理解,附圖以及對(duì)其的詳細(xì)描述不旨在將本發(fā)明限制到所公開的特定形式,而是相反,本發(fā)明將涵蓋落入如由所附權(quán)利要求定義的本公開的精神和范圍內(nèi)的所有修改、等價(jià)物和替代物。
術(shù)語“被配置為”在本文中被用來通過指示單元/電路/組件包括在操作期間執(zhí)行一個(gè)或多個(gè)任務(wù)的結(jié)構(gòu)(例如,電路系統(tǒng))來意指結(jié)構(gòu)。因此,即使當(dāng)單元/電路/組件當(dāng)前不可操作(例如,沒有開啟),指定的單元/電路/組件也可以被稱為被配置為執(zhí)行任務(wù)。與“被配置為”語言一起使用的單元/電路/組件包括硬件–-例如,存儲(chǔ)可執(zhí)行以實(shí)現(xiàn)操作的程序指令的存儲(chǔ)器、電路等。記載單元/電路/組件“被配置為”執(zhí)行一個(gè)或多個(gè)任務(wù)明確地不是旨在要對(duì)該單元/電路/組件援引35u.s.c.§112(f)。
具體實(shí)施方式
通過引用并入:
在此通過引用并入以下參考文獻(xiàn)的全部?jī)?nèi)容,如同在本文中完全和完整地闡述了一樣:
1990年4月3日發(fā)布的標(biāo)題為“graphicalsystemformodelingaprocessandassociatedmethod”的美國專利no.4,914,568。
標(biāo)題為“methodandapparatusforprovidingattributenodesinagraphicaldataflowenvironment”的美國專利no.5,481,741。
1997年8月18日提交的標(biāo)題為“embeddedgraphicalprogrammingsystem”的美國專利no.6,173,438。
1997年8月18日提交的標(biāo)題為“systemandmethodforconfiguringaninstrumenttoperformmeasurementfunctionsutilizingconversionofgraphicalprogramsintohardwareimplementations”的美國專利no.6,219,628。
2000年12月20日提交的標(biāo)題為“systemandmethodforprogrammaticallygeneratingagraphicalprograminresponsetoprograminformation”的美國專利no.7,210,117。
2012年8月23日提交的標(biāo)題為“compiletimeexecution”的美國專利申請(qǐng)no.13/592,995。
術(shù)語
以下是在本申請(qǐng)中使用的術(shù)語詞匯表:
存儲(chǔ)介質(zhì)—各種類型的非暫態(tài)計(jì)算機(jī)可存取存儲(chǔ)器設(shè)備或儲(chǔ)存設(shè)備中的任何類型。術(shù)語“存儲(chǔ)介質(zhì)”旨在包括:安裝介質(zhì),例如cd-rom、軟盤104或者帶設(shè)備;計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或隨機(jī)存取存儲(chǔ)器,諸如dram、ddrram、sram、edoram、rambusram等;諸如閃存、磁介質(zhì)之類的非易失性存儲(chǔ)器,例如,硬盤驅(qū)動(dòng)器、或者光存儲(chǔ)裝置;寄存器、或者其它類似類型的存儲(chǔ)元件,等等。存儲(chǔ)介質(zhì)還可以包括其它類型的非暫態(tài)存儲(chǔ)器或其組合。此外,存儲(chǔ)介質(zhì)可以位于執(zhí)行程序的第一計(jì)算機(jī)中,或者可以位于經(jīng)諸如因特網(wǎng)之類的網(wǎng)絡(luò)連接到第一計(jì)算機(jī)的第二不同的計(jì)算機(jī)中。在后一種實(shí)例中,第二計(jì)算機(jī)可以將程序指令提供給第一計(jì)算機(jī)以用于執(zhí)行。術(shù)語“存儲(chǔ)介質(zhì)”可以包括兩個(gè)或更多個(gè)存儲(chǔ)介質(zhì),該兩個(gè)或更多個(gè)存儲(chǔ)介質(zhì)可以駐留在不同的地點(diǎn)中,例如駐留在經(jīng)網(wǎng)絡(luò)連接的不同計(jì)算機(jī)中。
載體介質(zhì)—如上文描述的存儲(chǔ)介質(zhì)以及物理傳輸介質(zhì),諸如總線、網(wǎng)絡(luò)和/或傳送諸如電信號(hào)、電磁信號(hào)或數(shù)字信號(hào)之類的信號(hào)的其它物理傳輸介質(zhì)。
可編程硬件元件—包括各種硬件設(shè)備,這些硬件設(shè)備包括經(jīng)由可編程互連連接的多個(gè)可編程功能塊。示例包括fpga(現(xiàn)場(chǎng)可編程門陣列)、pld(可編程邏輯器件)、fpoa(現(xiàn)場(chǎng)可編程對(duì)象陣列)和cpld(復(fù)雜pld)??删幊坦δ軌K的范圍可以從細(xì)粒度的可編程功能塊(組合邏輯或查找表)到粗粒度的可編程功能塊(算術(shù)邏輯單元或處理器核)??删幊逃布€可以被稱為“可重配置邏輯”。
軟件程序—術(shù)語“軟件程序”旨在具有它的普通含義的全部寬度,并且包括可以被存儲(chǔ)在存儲(chǔ)介質(zhì)中并且由處理器執(zhí)行的任何類型的程序指令、代碼、腳本和/或數(shù)據(jù)或其組合。示例性軟件程序包括:以基于文本的編程語言(諸如c、c++、pascal、fortran、cobol、java、匯編語言等)編寫的程序;圖形程序(以圖形編程語言編寫的程序);匯編語言程序;已經(jīng)被編譯成機(jī)器語言的程序;腳本;以及其它類型的可執(zhí)行軟件。軟件程序可以包括以某種方式互操作的兩個(gè)或更多個(gè)軟件程序。注意到,本文描述的各種實(shí)施例可以由計(jì)算機(jī)或軟件程序來實(shí)現(xiàn)。軟件程序可以作為程序指令被存儲(chǔ)在存儲(chǔ)介質(zhì)上。
硬件配置程序—可以被用于將可編程硬件元件編程或配置可編程硬件元件的程序,例如網(wǎng)表或位文件。
程序—術(shù)語“程序”旨在具有它的普通含義的全部寬度。術(shù)語“程序”包括:1)可以被存儲(chǔ)在存儲(chǔ)器中并且可由處理器執(zhí)行的軟件程序,或者2)可用于配置可編程硬件元件的硬件配置程序。
圖形程序—包括多個(gè)互連的節(jié)點(diǎn)或圖標(biāo)的程序,其中該多個(gè)互連的節(jié)點(diǎn)或圖標(biāo)在視覺上指示程序的功能?;ミB的節(jié)點(diǎn)或圖標(biāo)是用于程序的圖形源代碼。圖形功能節(jié)點(diǎn)還可以被稱為塊。
以下提供圖形程序的各個(gè)方面的示例。以下示例和討論不旨在限制圖形程序的上面的定義,而是提供術(shù)語“圖形程序”涵蓋什么的示例:
圖形程序中的節(jié)點(diǎn)可以以數(shù)據(jù)流、控制流和/或執(zhí)行流格式中的一個(gè)或多個(gè)被連接。節(jié)點(diǎn)還可以以“信號(hào)流”格式被連接,“信號(hào)流”格式是數(shù)據(jù)流的子集。
可以被用于創(chuàng)建圖形程序的示例性圖形程序開發(fā)環(huán)境包括來自nationalinstruments的
術(shù)語“圖形程序”包括在圖形建模環(huán)境中創(chuàng)建的模型或框圖,其中該模型或框圖包括在視覺上指示模型或框圖的操作的互連的框(即,節(jié)點(diǎn))或圖標(biāo);示例性圖形建模環(huán)境包括
圖形程序可以在計(jì)算機(jī)系統(tǒng)的存儲(chǔ)器中被表示為數(shù)據(jù)結(jié)構(gòu)和/或程序指令。圖形程序(例如,這些數(shù)據(jù)結(jié)構(gòu)和/或程序指令)可以被編譯或解釋,以產(chǎn)生實(shí)現(xiàn)如圖形程序中所示的期望的方法或過程的機(jī)器語言。
到圖形程序的輸入數(shù)據(jù)可以從各種源中的任何源接收,諸如從設(shè)備、被測(cè)試的單元、被測(cè)量或控制的過程、另一個(gè)計(jì)算機(jī)程序、數(shù)據(jù)庫接收,或者從文件接收。而且,用戶可以使用圖形用戶界面(例如,前面板)向圖形程序或虛擬儀器輸入數(shù)據(jù)。
圖形程序可以可選地具有與圖形程序相關(guān)聯(lián)的gui。在這種情況下,該多個(gè)互連的框或節(jié)點(diǎn)常常被稱為圖形程序的框圖部分。
節(jié)點(diǎn)—在圖形程序的上下文中,可以被包括在圖形程序中的元素。圖形程序中的圖形程序節(jié)點(diǎn)(或簡(jiǎn)稱為節(jié)點(diǎn))還可以被稱為塊。節(jié)點(diǎn)可以具有表示圖形程序中的節(jié)點(diǎn)的相關(guān)聯(lián)的圖標(biāo),以及實(shí)現(xiàn)該節(jié)點(diǎn)的功能的底層代碼和/或數(shù)據(jù)。示例性節(jié)點(diǎn)(或塊)包括功能節(jié)點(diǎn)、子程序節(jié)點(diǎn)、終端節(jié)點(diǎn)、結(jié)構(gòu)節(jié)點(diǎn)等。節(jié)點(diǎn)可以通過連接圖標(biāo)或線在圖形程序中被連接在一起。
數(shù)據(jù)流程序—一種軟件程序,在該軟件程序中程序架構(gòu)是指定通過程序的數(shù)據(jù)流的有向圖的架構(gòu),因此每當(dāng)必需的輸入數(shù)據(jù)可用時(shí)功能就執(zhí)行。換句話說,數(shù)據(jù)流程序根據(jù)如下計(jì)算的數(shù)據(jù)流模型執(zhí)行:其中響應(yīng)于程序功能必需的輸入數(shù)據(jù)變得可用,在該計(jì)算的數(shù)據(jù)流模型下調(diào)度該程序功能以供執(zhí)行。數(shù)據(jù)流程序可以與指定要被執(zhí)行的計(jì)算的執(zhí)行流的過程程序形成對(duì)比。本文所使用的“數(shù)據(jù)流”或“數(shù)據(jù)流程序”指的是“動(dòng)態(tài)調(diào)度的數(shù)據(jù)流”和/或“靜態(tài)定義的數(shù)據(jù)流”。
圖形數(shù)據(jù)流程序(或圖形數(shù)據(jù)流圖)—也是數(shù)據(jù)流程序的圖形程序。圖形數(shù)據(jù)流程序包括多個(gè)互連節(jié)點(diǎn)(塊),其中,至少節(jié)點(diǎn)之間的連接的子集在視覺上指示一個(gè)節(jié)點(diǎn)產(chǎn)生的數(shù)據(jù)由另一個(gè)節(jié)點(diǎn)使用。labviewvi是圖形數(shù)據(jù)流程序的一個(gè)示例。simulink框圖是圖形數(shù)據(jù)流程序的另一個(gè)示例。
圖形用戶界面—這個(gè)術(shù)語旨在具有它的普通含義的全部寬度。術(shù)語“圖形用戶界面”常??s寫為“gui”。gui可以僅包括一個(gè)或多個(gè)輸入gui元素、僅包括一個(gè)或多個(gè)輸出gui元素、或者包括輸入gui元素和輸出gui元素二者。
以下提供gui的各個(gè)方面的示例。以下示例和討論不旨在限制gui的普通含義,而是提供術(shù)語“圖形用戶界面”涵蓋什么的示例:
gui可以包括具有一個(gè)或多個(gè)gui元素的單個(gè)窗口,或者可以包括多個(gè)單獨(dú)的gui元素(或者各自具有一個(gè)或多個(gè)gui元素的單獨(dú)窗口),其中單獨(dú)的gui元素或窗口可以可選地被平鋪(tile)在一起。
gui可以與圖形程序相關(guān)聯(lián)。在該實(shí)例中,可以使用各種機(jī)制來將gui中的gui元素與圖形程序中的節(jié)點(diǎn)連接。例如,當(dāng)在gui中創(chuàng)建輸入控件和輸出指示物時(shí),可以在圖形程序或框圖中自動(dòng)創(chuàng)建對(duì)應(yīng)的節(jié)點(diǎn)(例如,終端)??商娲?,用戶可以將終端節(jié)點(diǎn)放在框圖中,這可以導(dǎo)致或者在編輯時(shí)或者稍后在運(yùn)行時(shí)在gui中顯示對(duì)應(yīng)的gui元素前面板對(duì)象。作為另一個(gè)示例,gui可以包括嵌入圖形程序的框圖部分中的gui元素。
前面板—圖形用戶界面,該圖形用戶界面包括輸入控件和輸出指示物,并且使得用戶能夠在程序執(zhí)行時(shí)交互地控制或操縱提供給程序的輸入,并且查看程序的輸出。
前面板是一種類型的gui。前面板可以與如上文描述的圖形程序相關(guān)聯(lián)。
在儀器應(yīng)用中,前面板可以被類比為儀器的前面板。在工業(yè)自動(dòng)化應(yīng)用中,前面板可以被類比為設(shè)備的mmi(人機(jī)接口)。用戶可以調(diào)整前面板上的控件,以影響輸入并且查看相應(yīng)指示物上的輸出。
圖形用戶界面元素—圖形用戶界面的元素,諸如以用于提供輸入或顯示輸出。示例性圖形用戶界面元素包括輸入控件和輸出指示物。
輸入控件—用于向程序提供用戶輸入的圖形用戶界面元素。輸入控件顯示用戶輸入的值并且能夠由用戶自行操縱。示例性輸入控件包括撥盤、旋鈕、滑塊、輸入文本框等。
輸出指示物—用于顯示來自程序的輸出的圖形用戶界面元素。示例性輸出指示物包括圖表、圖、量規(guī)(gauge)、輸出文本框、數(shù)字顯示等。輸出指示物有時(shí)被稱為“輸出控件”。
計(jì)算機(jī)系統(tǒng)—各種類型的計(jì)算系統(tǒng)或處理系統(tǒng)中的任何計(jì)算系統(tǒng)或處理系統(tǒng),包括個(gè)人計(jì)算機(jī)系統(tǒng)(pc)、大型機(jī)計(jì)算機(jī)系統(tǒng)、工作站、網(wǎng)絡(luò)裝備、因特網(wǎng)裝備、個(gè)人數(shù)字助理(pda)、電視系統(tǒng)、網(wǎng)格計(jì)算系統(tǒng)或者其它設(shè)備或設(shè)備的組合。一般地,術(shù)語“計(jì)算機(jī)系統(tǒng)”可以被廣泛地定義為涵蓋具有執(zhí)行來自存儲(chǔ)介質(zhì)的指令的至少一個(gè)處理器的任何設(shè)備(或設(shè)備的組合)。
測(cè)量設(shè)備—包括儀器、數(shù)據(jù)獲取設(shè)備、智能傳感器以及被配置為獲取和/或存儲(chǔ)數(shù)據(jù)的各種類型的設(shè)備中的任何設(shè)備。測(cè)量設(shè)備還可以可選地被進(jìn)一步配置為分析或處理獲取的或存儲(chǔ)的數(shù)據(jù)。測(cè)量設(shè)備的示例包括儀器(諸如傳統(tǒng)的獨(dú)立“盒”儀器、基于計(jì)算機(jī)的儀器(卡上的儀器)或外部?jī)x器)、數(shù)據(jù)獲取卡、計(jì)算機(jī)外部的與數(shù)據(jù)獲取卡類似地操作的設(shè)備、智能傳感器、機(jī)箱中的一個(gè)或多個(gè)daq或測(cè)量卡或模塊、諸如圖像獲取(或機(jī)器視覺)卡(也被稱為視頻捕獲板)或智能相機(jī)之類的圖像獲取設(shè)備、運(yùn)動(dòng)控制設(shè)備、具有機(jī)器視覺的機(jī)器人、以及其它相似類型的設(shè)備。示例性“獨(dú)立”儀器包括示波器、萬用表、信號(hào)分析儀、任意波形發(fā)生器、光譜儀、以及類似的測(cè)量?jī)x器、測(cè)試儀器或自動(dòng)化儀器。
測(cè)量設(shè)備還可以被配置為例如響應(yīng)于對(duì)所獲取的或存儲(chǔ)的數(shù)據(jù)的分析而執(zhí)行控制功能。例如,測(cè)量設(shè)備可以響應(yīng)于特定數(shù)據(jù)而向外部系統(tǒng)(諸如向運(yùn)動(dòng)控制系統(tǒng)或向傳感器)發(fā)送控制信號(hào)。測(cè)量設(shè)備還可以被配置為執(zhí)行自動(dòng)化功能,即可以接收和分析數(shù)據(jù),并且作為響應(yīng)發(fā)出自動(dòng)化控制信號(hào)。
功能單元(或處理元件)—指各種元件或元件的組合。處理元件包括例如諸如asic(專用集成電路)之類的電路、單獨(dú)的處理器核的部分或電路、全部處理器核、單獨(dú)的處理器、諸如現(xiàn)場(chǎng)可編程門陣列(fpga)之類的可編程硬件設(shè)備和/或包括多個(gè)處理器的系統(tǒng)的較大的部分以及其任何組合。
自動(dòng)地—指在沒有直接指定或執(zhí)行動(dòng)作或操作的用戶輸入的情況下,由計(jì)算機(jī)系統(tǒng)(例如,由計(jì)算機(jī)系統(tǒng)執(zhí)行的軟件)或設(shè)備(例如,電路系統(tǒng)、可編程硬件元件、asic,等等)執(zhí)行的動(dòng)作或操作。因此,術(shù)語“自動(dòng)地”與其中用戶提供輸入來直接執(zhí)行操作的由用戶手動(dòng)執(zhí)行或指定的操作形成對(duì)照。自動(dòng)過程可以由用戶提供的輸入發(fā)起,但是被“自動(dòng)地”執(zhí)行的后續(xù)動(dòng)作不是由用戶指定的,即,不是“手動(dòng)地”執(zhí)行的,其中在“手動(dòng)地”執(zhí)行中用戶指定要執(zhí)行的每個(gè)動(dòng)作。例如,通過選擇每個(gè)字段并且提供指定信息的輸入(例如,通過鍵入信息、選擇復(fù)選框、單選選擇,等等)來填寫電子表格的用戶是在手動(dòng)地填寫表格,即使計(jì)算機(jī)系統(tǒng)必須響應(yīng)于用戶動(dòng)作來更新表格。表格可以由計(jì)算機(jī)系統(tǒng)自動(dòng)填寫,其中計(jì)算機(jī)系統(tǒng)(例如,在計(jì)算機(jī)系統(tǒng)上執(zhí)行的軟件)分析表格的字段并且在沒有指定字段答案的任何用戶輸入的情況下填寫表格。如上所述,用戶可以調(diào)用表格的自動(dòng)填寫,但是不參與表格的實(shí)際填寫(例如,用戶不是手動(dòng)地指定字段的答案,而是這些字段被自動(dòng)地完成)。本說明書提供了響應(yīng)于用戶已采取的動(dòng)作而被自動(dòng)執(zhí)行的操作的各種示例。
并發(fā)—指并行執(zhí)行或?qū)嵤渲?,任?wù)、過程或程序以至少部分重疊的方式被執(zhí)行。例如,并發(fā)性可以使用其中任務(wù)在相應(yīng)的計(jì)算元件上(至少部分地)并行執(zhí)行的“強(qiáng)”或嚴(yán)格的并行性來實(shí)現(xiàn),或者使用其中(例如通過執(zhí)行線程的時(shí)分復(fù)用)任務(wù)以交錯(cuò)方式執(zhí)行的“弱并行性”來實(shí)現(xiàn)。
圖1a–計(jì)算機(jī)系統(tǒng)
圖1a示出了根據(jù)一些實(shí)施例的被配置為執(zhí)行被配置為對(duì)互鎖存儲(chǔ)器編程和/或利用互鎖存儲(chǔ)器的程序(例如,圖形程序)的示例性計(jì)算機(jī)系統(tǒng)82。注意到,雖然實(shí)施例中的一些實(shí)施例依據(jù)圖形程序來描述,但是所公開的技術(shù)也廣泛適用于基于文本的程序,因此所描述的實(shí)施例的所描述的圖形程序方面應(yīng)當(dāng)被認(rèn)為僅僅是示例性的,即,參考圖形程序描述的新技術(shù)還適用于基于文本的程序。
如圖1a中所示,計(jì)算機(jī)系統(tǒng)82可以包括被配置為當(dāng)圖形程序被創(chuàng)建和/或執(zhí)行時(shí)顯示該圖形程序的顯示設(shè)備。顯示設(shè)備還可以被配置為在圖形程序的執(zhí)行期間顯示該圖形程序的圖形用戶界面或前面板。圖形用戶界面可以包括例如依賴于計(jì)算平臺(tái)的任何類型的圖形用戶界面。
計(jì)算機(jī)系統(tǒng)82可以包括在其上可以存儲(chǔ)根據(jù)本公開的一個(gè)實(shí)施例的一個(gè)或多個(gè)計(jì)算機(jī)程序或軟件組件的至少一個(gè)存儲(chǔ)介質(zhì)。例如,存儲(chǔ)介質(zhì)可以存儲(chǔ)一個(gè)或多個(gè)圖形(或基于文本的)程序,該一個(gè)或多個(gè)圖形(或基于文本的)程序是可執(zhí)行的,以執(zhí)行本文描述的方法。此外,存儲(chǔ)介質(zhì)可以存儲(chǔ)被用于創(chuàng)建和/或執(zhí)行這樣的圖形(或基于文本的)程序的圖形(或基于文本的)編程開發(fā)環(huán)境應(yīng)用。存儲(chǔ)介質(zhì)還可以存儲(chǔ)操作系統(tǒng)軟件,以及用于計(jì)算機(jī)系統(tǒng)的操作的其它軟件。各種實(shí)施例還包括在載體介質(zhì)上接收或存儲(chǔ)根據(jù)前述描述實(shí)現(xiàn)的指令和/或數(shù)據(jù)。
圖1b–計(jì)算機(jī)網(wǎng)絡(luò)
圖1b示出了包括耦接到第二計(jì)算機(jī)系統(tǒng)90的第一計(jì)算機(jī)系統(tǒng)82的系統(tǒng)。計(jì)算機(jī)系統(tǒng)82可以經(jīng)由網(wǎng)絡(luò)84(或計(jì)算機(jī)總線)耦接到第二計(jì)算機(jī)系統(tǒng)90。計(jì)算機(jī)系統(tǒng)82和90可以根據(jù)期望各自是各種類型中的任何類型。網(wǎng)絡(luò)84也可以是各種類型中的任何類型,包括lan(局域網(wǎng))、wan(廣域網(wǎng))、因特網(wǎng)或內(nèi)聯(lián)網(wǎng)等。計(jì)算機(jī)系統(tǒng)82和90可以以分布的方式執(zhí)行圖形程序。例如,計(jì)算機(jī)82可以執(zhí)行圖形程序的框圖的第一部分,計(jì)算機(jī)系統(tǒng)90可以執(zhí)行圖形程序的框圖的第二部分。作為另一個(gè)示例,計(jì)算機(jī)82可以顯示圖形程序的圖形用戶界面,計(jì)算機(jī)系統(tǒng)90可以執(zhí)行圖形程序的框圖。
在一個(gè)實(shí)施例中,圖形程序的圖形用戶界面可以在計(jì)算機(jī)系統(tǒng)82的顯示設(shè)備上顯示,并且框圖可以在耦接到計(jì)算機(jī)系統(tǒng)82的設(shè)備上執(zhí)行。該設(shè)備可以包括可編程硬件元件和/或可以包括可以執(zhí)行實(shí)時(shí)操作系統(tǒng)的處理器和存儲(chǔ)介質(zhì)。在一個(gè)實(shí)施例中,可以在設(shè)備上下載和執(zhí)行圖形程序。例如,圖形程序所關(guān)聯(lián)的應(yīng)用開發(fā)環(huán)境可以為在實(shí)時(shí)系統(tǒng)中在設(shè)備上下載圖形程序以便執(zhí)行提供支持。
示例性系統(tǒng)
本公開的實(shí)施例可以涉及執(zhí)行測(cè)試和/或測(cè)量功能;控制和/或建模儀器或工業(yè)自動(dòng)化硬件;建模和模擬功能,例如建?;蚰M正在被開發(fā)或測(cè)試的設(shè)備或產(chǎn)品,等等。其中可以使用圖形程序的示例性測(cè)試應(yīng)用包括硬件在回路(hardware-in-the-loop)測(cè)試和快速控制原型等。
然而,應(yīng)當(dāng)指出,本發(fā)明的實(shí)施例可以被用于許多應(yīng)用,并且不限于上述應(yīng)用。換句話說,在本說明書中討論的應(yīng)用僅僅是示例性的,并且本發(fā)明的實(shí)施例可以被用于各種類型的系統(tǒng)中的任何類型的系統(tǒng)中。因此,本發(fā)明的系統(tǒng)和方法的實(shí)施例被配置為在各種類型的應(yīng)用中的任何類型的應(yīng)用中被使用,這些應(yīng)用包括其它類型的設(shè)備(諸如多媒體設(shè)備、視頻設(shè)備、音頻設(shè)備、電話設(shè)備、因特網(wǎng)設(shè)備等)的控制、以及通用軟件應(yīng)用(諸如字處理、電子表格、網(wǎng)絡(luò)控制、網(wǎng)絡(luò)監(jiān)視、金融應(yīng)用、游戲等)。
圖2a示出了可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的示例性儀器控制系統(tǒng)100。系統(tǒng)100包括耦接到一個(gè)或多個(gè)儀器的主計(jì)算機(jī)82。主計(jì)算機(jī)82可以包括cpu、顯示屏、存儲(chǔ)器以及一個(gè)或多個(gè)輸入設(shè)備(諸如如圖所示的鼠標(biāo)或鍵盤)。計(jì)算機(jī)82可以與一個(gè)或多個(gè)儀器一起操作,以例如經(jīng)由軟件104的執(zhí)行來分析、測(cè)量或控制被測(cè)單元(unitundertest,uut)或過程150。
一個(gè)或多個(gè)儀器可以包括gpib儀器112和相關(guān)聯(lián)的gpib接口卡122、被插入到具有相關(guān)聯(lián)的信號(hào)調(diào)節(jié)電路系統(tǒng)126的機(jī)箱124中或以其它方式與機(jī)箱124耦接的數(shù)據(jù)獲取板114、vxi儀器116、pxi儀器118、視頻設(shè)備或相機(jī)132以及相關(guān)聯(lián)的圖像獲取(或機(jī)器視覺)卡134、運(yùn)動(dòng)控制設(shè)備136和相關(guān)聯(lián)的運(yùn)動(dòng)控制接口卡138、和/或一個(gè)或多個(gè)基于計(jì)算機(jī)的儀器卡142,以及其它類型的設(shè)備。計(jì)算機(jī)系統(tǒng)可以耦接到這些儀器中的一個(gè)或多個(gè)儀器并且與該一個(gè)或多個(gè)儀器一起操作。儀器可以被耦接到被測(cè)單元(uut)或過程150,或者可以被耦接以接收通常由換能器生成的場(chǎng)信號(hào)。系統(tǒng)100可以在數(shù)據(jù)獲取和控制應(yīng)用中、在測(cè)試和測(cè)量應(yīng)用中、在圖像處理或機(jī)器視覺應(yīng)用中、在過程控制應(yīng)用中、在人機(jī)接口應(yīng)用中、在模擬應(yīng)用中或者在硬件在回路驗(yàn)證應(yīng)用中等被使用。
圖2b示出了可以實(shí)現(xiàn)本發(fā)明的實(shí)施例的示例性工業(yè)自動(dòng)化系統(tǒng)200。工業(yè)自動(dòng)化系統(tǒng)200類似于圖2a中所示的儀器或測(cè)試和測(cè)量系統(tǒng)100。為了方便,與圖2a中的元件相似或相同的元件具有相同的附圖標(biāo)記。系統(tǒng)200可以包括耦接到一個(gè)或多個(gè)設(shè)備或儀器的計(jì)算機(jī)82。計(jì)算機(jī)82可以包括cpu、顯示屏、存儲(chǔ)器以及一個(gè)或多個(gè)輸入設(shè)備(諸如如圖所示的鼠標(biāo)或鍵盤)。計(jì)算機(jī)82可以與一個(gè)或多個(gè)設(shè)備一起操作,以例如經(jīng)由軟件104的執(zhí)行來執(zhí)行關(guān)于過程或設(shè)備150的自動(dòng)化功能,諸如mmi(人機(jī)接口)、scada(監(jiān)督控制和數(shù)據(jù)獲取)、便攜式或分布式數(shù)據(jù)獲取、過程控制、高級(jí)分析或其它控制等。
一個(gè)或多個(gè)設(shè)備可以包括插入到具有相關(guān)聯(lián)的信號(hào)調(diào)節(jié)電路系統(tǒng)126的機(jī)箱124中或以其它方式與機(jī)箱124耦接的數(shù)據(jù)獲取板114、pxi儀器118、視頻設(shè)備132和相關(guān)聯(lián)的圖像獲取卡134、運(yùn)動(dòng)控制設(shè)備136和相關(guān)聯(lián)的運(yùn)動(dòng)控制接口卡138、現(xiàn)場(chǎng)總線設(shè)備270和相關(guān)聯(lián)的現(xiàn)場(chǎng)總線接口卡172、plc(可編程邏輯控制器)176、串行儀器282和相關(guān)聯(lián)的串行接口卡184、或分布式數(shù)據(jù)獲取系統(tǒng)(諸如可以從國家儀器公司獲得的現(xiàn)場(chǎng)點(diǎn)(fieldpoint)系統(tǒng)185)、以及其它類型的設(shè)備。
圖3a是可以執(zhí)行或利用程序(例如,圖形程序)的示例性系統(tǒng)的高級(jí)框圖。圖3a示出了包括控制器92和設(shè)施(plant)94的通用控制和/或模擬系統(tǒng)的總體高級(jí)框圖??刂破?2表示用戶可以試圖開發(fā)的控制系統(tǒng)/算法。設(shè)施94表示用戶可以試圖控制的系統(tǒng)。例如,如果用戶正在設(shè)計(jì)用于汽車的ecu,則控制器92是ecu,并且設(shè)施94是汽車的引擎(以及可能其它組件,諸如變速器、制動(dòng)器等)。如圖所示,用戶可以創(chuàng)建指定或?qū)崿F(xiàn)控制器92和設(shè)施94中的一個(gè)或兩者的功能的圖形程序。例如,控制工程師可以使用建模和模擬工具來創(chuàng)建設(shè)施94的模型(圖形程序)和/或創(chuàng)建用于控制器92的算法(圖形程序)。
圖3b示出了可以執(zhí)行控制和/或模擬功能的示例性系統(tǒng)。如圖所示,控制器92可以由執(zhí)行或?qū)崿F(xiàn)圖形程序的計(jì)算機(jī)系統(tǒng)82或其它設(shè)備(例如,包括處理器和存儲(chǔ)介質(zhì)和/或包括可編程硬件元件的設(shè)備)來實(shí)現(xiàn)。以類似的方式,設(shè)施94可以由執(zhí)行或?qū)崿F(xiàn)圖形程序的計(jì)算機(jī)系統(tǒng)或其它設(shè)備144(例如,包括處理器和存儲(chǔ)介質(zhì)和/或包括可編程硬件元件的設(shè)備)來實(shí)現(xiàn),或者可以在真實(shí)的物理系統(tǒng)(例如,汽車引擎)中實(shí)現(xiàn)或被實(shí)現(xiàn)為真實(shí)的物理系統(tǒng)。
在一個(gè)實(shí)施例中,可以創(chuàng)建在執(zhí)行快速控制原型中使用的一個(gè)或多個(gè)圖形程序??焖倏刂圃?rcp)一般是指用戶通過其開發(fā)控制算法并且在被連接到真實(shí)系統(tǒng)的目標(biāo)控制器上快速執(zhí)行該算法的過程。用戶可以使用圖形程序來開發(fā)控制算法,并且圖形程序可以在控制器92上(例如,在計(jì)算機(jī)系統(tǒng)或其它設(shè)備上)執(zhí)行。計(jì)算機(jī)系統(tǒng)82可以是支持實(shí)時(shí)執(zhí)行的平臺(tái),例如,包括執(zhí)行實(shí)時(shí)操作系統(tǒng)(rtos)的處理器的設(shè)備或者包括可編程硬件元件的設(shè)備。
在一個(gè)實(shí)施例中,可以創(chuàng)建在執(zhí)行硬件在回路(hil)模擬中使用的一個(gè)或多個(gè)圖形程序。硬件在回路(hil)是指設(shè)施模型94的實(shí)時(shí)執(zhí)行,以測(cè)試真實(shí)控制器92的操作。例如,一旦控制器92已經(jīng)被設(shè)計(jì)出來,則在真實(shí)的設(shè)施(例如,真實(shí)的汽車)中實(shí)際地徹底測(cè)試控制器92可能是昂貴和復(fù)雜的。因此,(由圖形程序?qū)崿F(xiàn)的)設(shè)施模型被實(shí)時(shí)地執(zhí)行,以使真實(shí)的控制器92“相信”它被連接到真實(shí)的設(shè)施(例如,真實(shí)的引擎)或者像它被連接到真實(shí)的設(shè)施一樣操作。
在上面的圖2a、2b和3b的實(shí)施例中,各種設(shè)備中的一個(gè)或多個(gè)可以經(jīng)諸如因特網(wǎng)之類的網(wǎng)絡(luò)彼此耦接。在一個(gè)實(shí)施例中,用戶操作以從多個(gè)可能的目標(biāo)設(shè)備中選擇目標(biāo)設(shè)備,以用于使用程序(例如,圖形程序)進(jìn)行編程或配置。因此,用戶可以在計(jì)算機(jī)上創(chuàng)建圖形程序并且在該計(jì)算機(jī)上使用(執(zhí)行)該圖形程序或者將該圖形程序部署到遠(yuǎn)離該計(jì)算機(jī)定位并且通過網(wǎng)絡(luò)耦接到該計(jì)算機(jī)的目標(biāo)設(shè)備(以用于在該目標(biāo)設(shè)備上遠(yuǎn)程執(zhí)行)。
(諸如在圖2a和2b所示的應(yīng)用中)執(zhí)行(例如用于測(cè)量、儀器控制、工業(yè)自動(dòng)化、建模或模擬的)數(shù)據(jù)獲取、分析和/或呈現(xiàn)的圖形軟件程序可以被稱為虛擬儀器。
圖4–計(jì)算機(jī)系統(tǒng)框圖
圖4是表示圖1a和1b中所示的計(jì)算機(jī)系統(tǒng)82和/或90或者圖2a或2b中所示的計(jì)算機(jī)系統(tǒng)82的一個(gè)實(shí)施例的框圖12。應(yīng)當(dāng)指出,可以根據(jù)期望使用任何類型的計(jì)算機(jī)系統(tǒng)配置或架構(gòu),并且圖4示出了代表性的pc實(shí)施例。還應(yīng)當(dāng)指出,計(jì)算機(jī)系統(tǒng)可以是通用計(jì)算機(jī)系統(tǒng)、在安裝在機(jī)箱中的卡上實(shí)現(xiàn)的計(jì)算機(jī)或者其它類型的實(shí)施例。為了簡(jiǎn)單起見,省略了對(duì)理解本描述不是必需的計(jì)算機(jī)元件。
計(jì)算機(jī)可以包括耦接到處理器或主機(jī)總線162的至少一個(gè)中央處理單元或cpu(處理器)160。cpu160可以是各種類型中的任何類型,這些類型包括x86處理器,例如pentium(奔騰)級(jí)、powerpc處理器、來自risc處理器的sparc系列的cpu、以及其它處理器。通常包括ram并且被稱為主存儲(chǔ)器的存儲(chǔ)介質(zhì)166通過存儲(chǔ)器控制器164耦接到主機(jī)總線162。主存儲(chǔ)器166可以存儲(chǔ)被配置為對(duì)互鎖存儲(chǔ)器編程和/或利用互鎖存儲(chǔ)器的一個(gè)或多個(gè)程序。主存儲(chǔ)器還可以存儲(chǔ)操作系統(tǒng)軟件以及用于計(jì)算機(jī)系統(tǒng)的操作的其它軟件。
主機(jī)總線162可以通過總線控制器168或總線橋邏輯耦接到擴(kuò)展總線或輸入/輸出總線170。擴(kuò)展總線170可以是pci(外圍組件互連)擴(kuò)展總線,但是還可以使用其它總線類型。擴(kuò)展總線170包括用于諸如上文所描述的設(shè)備之類的各種設(shè)備的槽。計(jì)算機(jī)82還包括耦接到擴(kuò)展總線170的視頻顯示子系統(tǒng)180和硬盤驅(qū)動(dòng)器182。計(jì)算機(jī)82還可以包括耦接到gpib總線112的gpib卡122和/或耦接到vxi機(jī)箱116的mxi設(shè)備186。
如圖所示,設(shè)備190也可以連接到計(jì)算機(jī)。設(shè)備190可以包括可以執(zhí)行實(shí)時(shí)操作系統(tǒng)的處理器和存儲(chǔ)器。設(shè)備190還可以包括或者替代地包括可編程硬件元件。計(jì)算機(jī)系統(tǒng)可以被配置為將程序(例如,圖形程序)部署到設(shè)備190,以用于在設(shè)備190上執(zhí)行圖形程序。所部署的圖形程序可以采取直接表示圖形程序的圖形程序指令或數(shù)據(jù)結(jié)構(gòu)的形式??商娲兀渴鸬膱D形程序可以采取從圖形程序生成的文本代碼(例如,c代碼)的形式。作為另一個(gè)示例,所部署的圖形程序可以采取從圖形程序生成的編譯代碼或者從圖形程序所生成的文本代碼進(jìn)而生成的編譯代碼的形式。如上面所指出的,在一些實(shí)施例中,(一個(gè)或多個(gè))程序可以是基于文本的。
示例性ldpc解碼器
下面參考圖5-16討論的各種實(shí)施例涉及與解碼糾錯(cuò)碼并且特別是低密度奇偶校驗(yàn)(ldpc)碼相關(guān)聯(lián)的技術(shù)。然而,除了這種解碼之外和/或作為這種解碼的代替,類似的技術(shù)可以被應(yīng)用于各種算法。為了解釋的目的而討論ldpc碼,但并不旨在限制本技術(shù)的范圍。本文討論的互鎖存儲(chǔ)器、性能建模、硬件編程、存儲(chǔ)器序列重新布置和/或自尋址技術(shù)的實(shí)施例可以在用于各種算法中的任何算法的各種上下文中被應(yīng)用,這些算法可以是本文明確列出的或者可以是沒有明確列出的。
這樣的算法的示例包括但不限于:錯(cuò)誤控制碼、圖形編碼/解碼、源編碼、密碼學(xué)、最大似然檢測(cè)器、最大后驗(yàn)檢測(cè)器、壓縮、多輸入多輸出(mimo)通信、波束形成、波束操控、微分方程求解、線性方程求解、線性代數(shù)、優(yōu)化、檢測(cè)和估計(jì)、聯(lián)網(wǎng)、機(jī)器學(xué)習(xí)、信道估計(jì)、圖像處理、運(yùn)動(dòng)控制、過程控制、生物信息學(xué)、動(dòng)態(tài)編程、大數(shù)據(jù)應(yīng)用、計(jì)算信息學(xué)、物聯(lián)網(wǎng)等。因此,存儲(chǔ)器訪問序列可以基于以下項(xiàng)中的一個(gè)或多個(gè)和/或從以下項(xiàng)中的一個(gè)或多個(gè)導(dǎo)出但不限于這些項(xiàng):奇偶校驗(yàn)矩陣、生成器矩陣、信道矩陣、解碼算法中的節(jié)點(diǎn)和/或邊緣的數(shù)量、天線的數(shù)量、信道抽頭(tap)的數(shù)量、壓縮比、角度范圍、多項(xiàng)式的次數(shù)、方程的數(shù)量、局部和/或全局最大值和/或最小值、網(wǎng)絡(luò)節(jié)點(diǎn)的數(shù)量,等等。
線性代數(shù)算法的示例性實(shí)施例包括但不限于:對(duì)稱秩-k更新、對(duì)稱秩-2k更新、cholesky因子分解(正定矩陣分解為下三角矩陣及其共軛轉(zhuǎn)置的乘積)、更新cholesky因子分解(例如,當(dāng)先前分解的矩陣以某種方式改變時(shí))、下上(lowerupper,lu)因子分解(矩陣分解為下三角矩陣和上三角矩陣的乘積)、qr因子分解(矩陣分解為正交矩陣q和上三角矩陣r的乘積)、更新qr因子分解、lq因子分解、三角矩陣求逆、約簡(jiǎn)為hessenberg形式、約簡(jiǎn)為雙對(duì)角形式、約簡(jiǎn)為三對(duì)角形式、三角矩陣lyapunov方程求解、三角矩陣sylvester方程求解,等等。
圖5示出了包括ldpc解碼器的示例性系統(tǒng)的一個(gè)實(shí)施例。在所示實(shí)施例中,系統(tǒng)500包括編碼器510、解碼器520、調(diào)制器530和解調(diào)器540。
在所示實(shí)施例中,編碼器510被配置為接收要被發(fā)送的消息、(例如,使用ldpc生成器矩陣)對(duì)消息進(jìn)行編碼以及將編碼的消息發(fā)送到調(diào)制器530。
在所示實(shí)施例中,調(diào)制器530被配置為將編碼消息的位變換和/或分組成符號(hào)以用于無線傳輸?shù)今罱拥浇庹{(diào)器540的天線,即,被配置為調(diào)制編碼消息以用于傳輸。無線傳輸可以符合各種傳輸標(biāo)準(zhǔn)中的任何傳輸標(biāo)準(zhǔn)。在其它實(shí)施例中,傳輸可以不是無線的。
在所示實(shí)施例中,解調(diào)器540被配置為解調(diào)接收到的信號(hào),以生成編碼消息。然而,由于傳輸中的噪聲,可能難以確定編碼消息中的元素的值(例如,位的極性)。在許多情況下,ldpc解碼可以允許原始消息的準(zhǔn)確重建。
在所示實(shí)施例中,解碼器520被配置為例如基于奇偶校驗(yàn)矩陣(奇偶校驗(yàn)矩陣常常用字母“h”表示并且可以被稱為“h矩陣”)來重建原始消息,即,被配置為將編碼消息解碼,由此恢復(fù)原始消息。在所示實(shí)施例中,解碼器520包括互鎖存儲(chǔ)器550,互鎖存儲(chǔ)器550可以被配置為解決或防止對(duì)應(yīng)于與奇偶校驗(yàn)矩陣相關(guān)聯(lián)的操作的訪問冒險(xiǎn)。下面進(jìn)一步詳細(xì)描述互鎖存儲(chǔ)器550的實(shí)施例。解碼器520可以包括用于基于奇偶校驗(yàn)矩陣來執(zhí)行存儲(chǔ)器訪問的流水線化的數(shù)據(jù)路徑,并且本文公開的各種技術(shù)可以降低流水線化的數(shù)據(jù)路徑中的延遲。解碼器520可以被配置為將解碼的消息發(fā)送到接收者硬件(未示出)。
圖6a示出了示出h矩陣620的示例性實(shí)施例的圖。在所示實(shí)施例中,h矩陣620是奇偶校驗(yàn)矩陣并且每個(gè)位置中的數(shù)字指示循環(huán)移位量。h矩陣620中的空白位置指示“不關(guān)心”,其中沒有指示移位量(例如,因?yàn)樗槐皇褂?。
在一些實(shí)施例中,為了使用ldpc解碼接收到的信號(hào),解碼器520被配置為遍歷(iteratethrough)h矩陣620的層(在所示實(shí)施例中為對(duì)應(yīng)于矩陣的行的12層),以解碼接收到的信號(hào)。例如,解碼器520可以讀取層中的相關(guān)位置、確定最小值或最大值以及在前進(jìn)到下一層之前基于所確定的最小值或最大值來更新用于該層的值。在所示實(shí)施例中,h矩陣620是12×24矩陣,但是在其它實(shí)施例中可以使用各種矩陣大小中的任何矩陣大小。
圖6b示出了示出beta矩陣640的示例性實(shí)施例的圖。在所示實(shí)施例中,beta矩陣640將用于h矩陣620的層l1至l12的迭代處理的存儲(chǔ)器讀/寫地址進(jìn)行編碼。在一些實(shí)施例中,編碼的地址對(duì)應(yīng)于互鎖存儲(chǔ)器550中的地點(diǎn)。在所示實(shí)施例中,beta矩陣640是基于h矩陣620形成的,并且指示h矩陣620中相關(guān)的(例如,不是“不關(guān)心”的)位置的塊索引。例如,h矩陣620中位于層l1和塊索引4處的位置具有值50,使得塊索引(4)被包括在beta矩陣640中的層l1中。在所示實(shí)施例中,beta矩陣640還包括一些空白的“不關(guān)心”的位置,這些空白的“不關(guān)心”的位置可以被包括,以便維護(hù)規(guī)則的矩陣。
在所示實(shí)施例中,beta矩陣640僅包括在h矩陣620中包括的列的數(shù)量的三分之一。相對(duì)于為h矩陣620中的每個(gè)位置執(zhí)行操作,這可以顯著地提高ldpc解碼性能,例如在一些實(shí)施例中提高多達(dá)三倍。
在一些實(shí)施例中,解碼器520被配置為在層中迭代地處理beta矩陣640。在該示例中,為了處理第一層,解碼器520被配置為讀取存儲(chǔ)器地點(diǎn)0、4、6、8、10、12和13、修改檢索出的數(shù)據(jù)中的至少一些數(shù)據(jù)以及將修改后的數(shù)據(jù)寫回到相同的地點(diǎn)中的至少一些地點(diǎn)。在一個(gè)實(shí)施例中,解碼器520被配置為計(jì)算用于給定層的最小值,并且在前進(jìn)到下一層之前基于該最小值來計(jì)算新值以寫回到相同的地點(diǎn)。因此,用于給定層的操作可以依賴于為前一層寫入的值。流水線化存儲(chǔ)器訪問以提高性能可能是期望的。然而,應(yīng)當(dāng)指出,例如,層2中的第一個(gè)地點(diǎn)與層1中的第一個(gè)地點(diǎn)相同(都是地點(diǎn)0)。因此,對(duì)于層2的地點(diǎn)0的讀取依賴于層1的寫入。在一些實(shí)施例中,互鎖存儲(chǔ)器550被配置為通過等待直至層1的寫入已經(jīng)完成才執(zhí)行層2的讀取來解決該依賴性。讀取的這種停滯可以確保正確性。然而,為了提高流水線化實(shí)現(xiàn)中的讀/寫性能,可能期望減少這種停滯。
圖6c示出了示出重新布置的beta矩陣660的一個(gè)實(shí)施例的圖。在所示實(shí)施例中,通過重新布置beta矩陣640的每行中的位置來形成重新布置的beta矩陣。這種重新布置可以減少讀/寫冒險(xiǎn),并且因此提高存儲(chǔ)器訪問性能。例如,考慮對(duì)以粗體示出的地點(diǎn)0的訪問。對(duì)于層二的地點(diǎn)0的讀取已經(jīng)被移位,使得對(duì)于層一的地點(diǎn)0的寫入可以在對(duì)于層二的讀取之前完成,因此避免了在流水線化實(shí)現(xiàn)中的停滯的需要。因此,在各種實(shí)施例中,存儲(chǔ)器訪問序列可以被重新布置,以提高存儲(chǔ)器性能。例如,這種重新布置可以由編譯器和/或由用于互鎖存儲(chǔ)器550的配置電路系統(tǒng)自動(dòng)執(zhí)行。下面參考圖12討論用于性能建模和選擇重新布置的存儲(chǔ)器訪問序列的技術(shù)。
現(xiàn)在參考圖7a,示出了示出根據(jù)一個(gè)實(shí)施例的基線解碼710的時(shí)間線的圖。在圖7a-7b中,陰影矩形指示寫入,而非陰影矩形指示讀取。
在圖7a的示例中,針對(duì)beta矩陣660的層1的所有地點(diǎn)發(fā)生讀取,這至少花費(fèi)八個(gè)周期(假設(shè)每周期發(fā)起一個(gè)讀取)。然后層1的所有地點(diǎn)被寫入,在示出的示例中這至少花費(fèi)另外八個(gè)周期。然后,對(duì)層二的處理以類似的讀取序列開始,隨后是寫入序列。
現(xiàn)在參考圖7b,示出了示出根據(jù)一個(gè)實(shí)施例的流水線化的解碼720的時(shí)間線的圖。在一些實(shí)施例中,解碼器520被配置為流水線化存儲(chǔ)器訪問的執(zhí)行。在所示示例中,對(duì)于層1的讀取一完成,對(duì)于層2的讀取就開始。相對(duì)于基線解碼710,這可以顯著地提高解碼性能,例如,提高多達(dá)兩倍。應(yīng)當(dāng)指出,仍然必須(例如,通過將氣泡插入流水線中)解決或防止冒險(xiǎn),但是在一些實(shí)施例中,(例如,使用重新布置的beta矩陣660)重新布置存儲(chǔ)器訪問序列可以大大減少冒險(xiǎn)。
本文討論了各種流水線化存儲(chǔ)器訪問方法,但是應(yīng)當(dāng)指出,在其它實(shí)施例中,所公開的技術(shù)可以在非流水線化存儲(chǔ)器訪問的上下文中被使用。
在一些實(shí)施例中,存儲(chǔ)器訪問可以被完全流水線化,以使得不包括(barring)用于解決冒險(xiǎn)的停滯(圖7b中未示出),每個(gè)周期如果可用的話則發(fā)出一個(gè)或多個(gè)讀和寫。在一些實(shí)施例中,存儲(chǔ)器可以是多端口的,從而允許在給定周期中發(fā)出多個(gè)讀和/或?qū)?,這可以相對(duì)于基線解碼710進(jìn)一步提高性能。
示例性互鎖存儲(chǔ)器
圖8a示出了示出互鎖存儲(chǔ)器550的一個(gè)實(shí)施例的框圖。在所示實(shí)施例中,互鎖存儲(chǔ)器550包括存儲(chǔ)器810和仲裁器(arbiter)830。在所示實(shí)施例中,仲裁器830包括被配置為接收讀和寫請(qǐng)求以及準(zhǔn)許這些請(qǐng)求的電路系統(tǒng),從而解決或防止/避免在過程中訪問存儲(chǔ)器810中的任何冒險(xiǎn)?;ユi存儲(chǔ)器550可以被配置為避免存儲(chǔ)器訪問冒險(xiǎn),而無需接收指示冒險(xiǎn)的信息連同對(duì)應(yīng)于該序列的存儲(chǔ)器訪問請(qǐng)求(例如,互鎖存儲(chǔ)器550可以被配置為基于內(nèi)部配置來避免冒險(xiǎn))。仲裁器830可以被配置為具有用于存儲(chǔ)器訪問請(qǐng)求序列的存儲(chǔ)器訪問約束,存儲(chǔ)器訪問約束的示例性實(shí)施例在下面參考圖9和圖14-15來描述。這些存儲(chǔ)器訪問約束可以被稱為“互鎖信息”。在一些實(shí)施例中,基于要使用互鎖存儲(chǔ)器550執(zhí)行的指定的存儲(chǔ)器訪問序列來填充互鎖信息。
如本文所使用的,“配置為具有存儲(chǔ)器訪問約束”或“使用存儲(chǔ)器訪問約束來配置”的電路系統(tǒng)旨在包括以下配置,其中:1)電路系統(tǒng)存儲(chǔ)信息,例如包含關(guān)于存儲(chǔ)器訪問約束的信息的數(shù)據(jù)結(jié)構(gòu)或表,2)電路系統(tǒng)包括被配置為實(shí)現(xiàn)存儲(chǔ)器訪問約束的專用電路系統(tǒng)(例如,asic),和/或3)電路系統(tǒng)包括被編程為實(shí)現(xiàn)存儲(chǔ)器訪問約束的可編程電路系統(tǒng)。在一些實(shí)施例中,被配置為具有存儲(chǔ)器訪問約束的冒險(xiǎn)電路系統(tǒng)可以被分組在一個(gè)地點(diǎn)中,或者可以是分布式的(例如,被分布在流水線化存儲(chǔ)器訪問數(shù)據(jù)路徑的階段之間)。
在所示實(shí)施例中,存儲(chǔ)器810被配置為如仲裁器830所允許的存儲(chǔ)接收到的寫入數(shù)據(jù)并且提供讀取數(shù)據(jù)。在一些實(shí)施例中,存儲(chǔ)器810是多端口的,以允許在給定的周期中發(fā)起多個(gè)讀和/或多個(gè)寫。例如,存儲(chǔ)器810的雙端口實(shí)施例可以允許在同一周期中發(fā)起對(duì)兩個(gè)不同地點(diǎn)的寫入。在一些實(shí)施例中,存儲(chǔ)器810包括多個(gè)存儲(chǔ)體(bank)。在一些實(shí)施例中,每個(gè)存儲(chǔ)體允許每周期僅發(fā)起一個(gè)讀和一個(gè)寫,但是可以在同一周期中(例如并發(fā)地)訪問不同的存儲(chǔ)體。
圖8b示出了示出互鎖存儲(chǔ)器550的另一個(gè)實(shí)施例的框圖。在所示實(shí)施例中,互鎖存儲(chǔ)器550包括地址生成器820。圖8b的其它元件可以如上文參考圖8a的被類似編號(hào)的元件所描述的來配置。在所示實(shí)施例中,地址生成器820包括被配置為生成用于讀和寫請(qǐng)求的地址的電路系統(tǒng)。例如,互鎖存儲(chǔ)器550可以針對(duì)存儲(chǔ)器訪問的特定數(shù)組或矩陣而被配置,并且地址生成器820可以被配置為基于請(qǐng)求被接收的順序來為這些請(qǐng)求指派地址。在一些實(shí)施例中,這可以允許互鎖存儲(chǔ)器550是自尋址的,以使得程序可以僅提供無地址信息的存儲(chǔ)器訪問請(qǐng)求,并且互鎖存儲(chǔ)器550被配置為生成用于對(duì)應(yīng)的訪問的適當(dāng)?shù)牡刂?。在一些?shí)施例中,在編譯期間確定程序中的存儲(chǔ)器訪問的序列和/或地址,這可以包括如下文參考圖11所討論的編譯時(shí)執(zhí)行。在一些實(shí)施例中,互鎖存儲(chǔ)器550包括一個(gè)或多個(gè)可編程硬件元件,以使得它可以針對(duì)不同的程序和/或算法來容易地重新配置。
在一些實(shí)施例中,互鎖存儲(chǔ)器550可以包括被配置為執(zhí)行與存儲(chǔ)器系統(tǒng)相關(guān)聯(lián)的數(shù)據(jù)轉(zhuǎn)發(fā)、高速緩存、預(yù)取等的附加元件(未示出)。在一些實(shí)施例中,互鎖存儲(chǔ)器550包括被配置為基于即將到來的存儲(chǔ)器訪問地址來執(zhí)行和/或調(diào)整高速緩存、預(yù)取、數(shù)據(jù)轉(zhuǎn)發(fā)等中的一個(gè)或多個(gè)的前瞻(look-ahead)電路系統(tǒng),以改進(jìn)性能。在各種實(shí)施例中,互鎖存儲(chǔ)器550被包括在設(shè)備(諸如ldpc解碼器或各種適當(dāng)設(shè)備中的任何設(shè)備)中。本文討論的各種技術(shù)可以被用于改進(jìn)包括一個(gè)或多個(gè)互鎖存儲(chǔ)器的各種設(shè)備中的任何設(shè)備的性能。
圖9示出了重新布置的beta矩陣660和對(duì)應(yīng)的互鎖表900的前五層的副本。在各種實(shí)施例中,互鎖表被用于指定用于存儲(chǔ)器訪問序列的存儲(chǔ)器訪問約束?;ユi表可以被存儲(chǔ)在互鎖存儲(chǔ)器系統(tǒng)中,和/或各種電路系統(tǒng)可以以其它方式被配置為具有存儲(chǔ)器訪問約束(例如,而不是維護(hù)由給定互鎖表指定的特定信息)。所示出的(一個(gè)或多個(gè))互鎖表被提供以便于解釋特定存儲(chǔ)器訪問約束。在一些實(shí)施例中,針對(duì)給定的程序或矩陣生成互鎖表900,并且互鎖存儲(chǔ)器550被配置為具有由互鎖表900指定的存儲(chǔ)器訪問約束。在所示實(shí)施例中,互鎖表900中的空白條目指示對(duì)應(yīng)的訪問可以在任何時(shí)間執(zhí)行,因?yàn)閷?duì)于該訪問不存在冒險(xiǎn)。
在一些實(shí)施例中,互鎖存儲(chǔ)器550包括在執(zhí)行程序之前被初始化為零的讀計(jì)數(shù)器和寫計(jì)數(shù)器。在這些實(shí)施例中,當(dāng)執(zhí)行給定的讀操作時(shí),互鎖存儲(chǔ)器550可以被配置為將當(dāng)前寫指針與互鎖表900中對(duì)應(yīng)于讀指針的的條目進(jìn)行比較,并且僅當(dāng)寫指針大于該條目時(shí)才允許讀取。例如,考慮重新布置的beta矩陣660中的行3、列3中的條目,該條目指示地點(diǎn)0?;ユi表900中的對(duì)應(yīng)條目包含9。因此,在這個(gè)實(shí)施例中,直到寫計(jì)數(shù)器至少為10,才能從重新布置的beta矩陣660中的對(duì)于行3、列3的地點(diǎn)0執(zhí)行讀取。應(yīng)當(dāng)指出,當(dāng)寫計(jì)數(shù)器為10時(shí),對(duì)于該存儲(chǔ)器操作序列,地點(diǎn)0將已經(jīng)(基于重新布置的beta矩陣660中的行2、列2)被寫入,因此避免了潛在的冒險(xiǎn)。類似的技術(shù)可以被用于寫入。例如,在一些實(shí)施例中,互鎖存儲(chǔ)器550被配置為僅當(dāng)當(dāng)前讀指針大于互鎖表中由寫指針指示的條目時(shí)才準(zhǔn)許寫入。
在一些實(shí)施例中,互鎖存儲(chǔ)器550不被配置為對(duì)寫操作執(zhí)行冒險(xiǎn)檢查,因?yàn)槊半U(xiǎn)已經(jīng)由數(shù)據(jù)流解決。例如,因?yàn)樾蛄幸呀?jīng)確保對(duì)于給定層和前一層的讀取將在請(qǐng)求對(duì)互鎖存儲(chǔ)器550的給定寫入之前完成(在這個(gè)實(shí)施例中,對(duì)給定層的寫入直到對(duì)整行的讀取已經(jīng)完成才被發(fā)起,以便找到最小值),所以對(duì)于重新布置的beta矩陣660,讀后寫冒險(xiǎn)是不存在的。
圖10示出了示出用于解決或防止數(shù)據(jù)冒險(xiǎn)的方法1000的一個(gè)實(shí)施例的流程圖。圖10中所示的方法可以與本文公開的計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件中的任何計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件等結(jié)合使用。在各種實(shí)施例中,所示的方法元素(本文中也稱為“框”)中的一些方法元素可以并發(fā)地執(zhí)行、以與所示次序不同的次序執(zhí)行、或者可以被省略。還可以根據(jù)期望執(zhí)行附加的方法元素。流程開始于框1010。
在框1010處,維護(hù)用于線性化的beta矩陣的數(shù)組(addr[96])和互鎖表的數(shù)組(interlock[96])。這些數(shù)組可以通過對(duì)beta矩陣660和互鎖表900使用光柵(raster)掃描排序來生成。在一些實(shí)施例中,這些數(shù)組中的一個(gè)或兩者被存儲(chǔ)在互鎖存儲(chǔ)器550中。在其它實(shí)施例中,冒險(xiǎn)電路系統(tǒng)以其它方式被配置為具有來自這些數(shù)組中的一個(gè)或兩者的信息。在所示實(shí)施例中,重新布置的beta矩陣660可以被用作地址表,以生成用于接收到的存儲(chǔ)器訪問請(qǐng)求的地址。流程前進(jìn)到框1020。
在框1020處,讀和寫指針被初始化為零。流程前進(jìn)到框1030和1060。
在框1030處,接收讀請(qǐng)求。流程前進(jìn)到判定框1040。
在判定框1040處,確定寫指針是否大于互鎖表中在讀指針的索引處(interlock[readpointer])的值。如果寫指針較大,則流程前進(jìn)到框1050。否則,流程返回到判定框1040(例如,互鎖存儲(chǔ)器550被配置為等待直至寫指針大于在interlock[readpointer]處的值才準(zhǔn)許讀請(qǐng)求。
在框1050處,讀取由beta矩陣中讀指針的索引(addr[readpointer])處的位置指示的地點(diǎn)。因此,所請(qǐng)求的讀操作被執(zhí)行。流程返回到框1030。
在框1060處,接收寫請(qǐng)求。流程前進(jìn)到框1070。
在框1070處,用于寫請(qǐng)求的數(shù)據(jù)被寫入由beta矩陣中寫指針的索引(addr[writepointer])處的位置指示的地點(diǎn)。因此,所請(qǐng)求的寫操作被執(zhí)行。在該實(shí)施例中,寫指針遞增(這可以允許一個(gè)或多個(gè)等待的讀請(qǐng)求繼續(xù)進(jìn)行)。流程返回到框1060。
在其它實(shí)施例中,可以以與框1040中對(duì)于讀取所利用的類似的方式來檢查寫入。在這些實(shí)施例中,互鎖存儲(chǔ)器550被配置為停滯給定的寫入,直到讀指針大于interlock[writepointer]。如上面所討論的,由于在示例beta矩陣660中的寫入的本質(zhì),所以在所示實(shí)施例中省略了這個(gè)框。在其它實(shí)施例中,可以包括這個(gè)框以用于寫入,但是對(duì)于讀取可以省略框1040,例如,對(duì)于其中數(shù)據(jù)流確保讀取將不會(huì)造成冒險(xiǎn)的程序,可以省略框1040。
生成互鎖信息
圖11示出了示出用于確定用于程序的存儲(chǔ)器訪問序列和/或地址的方法1100的一個(gè)實(shí)施例的流程圖。圖11中所示的方法可以與本文公開的計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件中的任何計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件等結(jié)合使用。在各種實(shí)施例中,所示的方法元素(或框)中的一些方法元素可以并發(fā)地執(zhí)行、以與所示的次序不同的次序執(zhí)行、或者可以被省略。還可以根據(jù)期望執(zhí)行附加的方法元素。流程開始于框1110。
在框1110處,接收輸入程序。該程序可以包括存儲(chǔ)器訪問操作,例如存儲(chǔ)器讀和/或?qū)?。在一些?shí)施例中,編譯器為包括互鎖存儲(chǔ)器550的系統(tǒng)接收供編譯的程序。流程前進(jìn)到框1120。
在框1120處,在輸入程序的編譯期間,通過執(zhí)行輸入程序的部分來生成信息。在編譯期間用于執(zhí)行輸入程序的部分的示例性技術(shù)在于2012年8月23日提交的并且標(biāo)題為“compiletimeexecution”的美國專利申請(qǐng)no.13/592,995中描述,該美國專利申請(qǐng)整體上通過引用并入本文。在一些實(shí)施例中,這些技術(shù)被用于生成用于對(duì)互鎖存儲(chǔ)器550進(jìn)行編程的信息。流程前進(jìn)到框1130。
在框1130處,基于該信息為輸入程序中的存儲(chǔ)器訪問生成地址、序列和/或存儲(chǔ)器訪問約束。例如,在一些實(shí)施例中,編譯器被配置為基于該信息為一個(gè)或多個(gè)互鎖表生成一個(gè)或多個(gè)地址表(例如,beta矩陣)和存儲(chǔ)器訪問約束。在這些實(shí)施例中,編譯器可以被配置為部分地執(zhí)行輸入程序,以便確定程序中存儲(chǔ)器訪問的次序、存儲(chǔ)器訪問的地址和/或存儲(chǔ)器訪問之間的冒險(xiǎn)。在一些實(shí)施例中,地址信息被用于自尋址。在一些實(shí)施例中,用于互鎖存儲(chǔ)器550的冒險(xiǎn)電路系統(tǒng)被配置為具有確定的存儲(chǔ)器訪問約束,并且被用于在執(zhí)行輸入程序時(shí)避免冒險(xiǎn)。在一些實(shí)施例中,這種配置可以自動(dòng)執(zhí)行,例如在輸入程序要被編譯并且編程到特定硬件上時(shí)執(zhí)行。在一些實(shí)施例中,編譯器被配置為重新布置存儲(chǔ)器操作序列,以便使用互鎖存儲(chǔ)器550來改進(jìn)性能。在一些實(shí)施例中,重新布置可以更改程序的編譯,以使用重新布置的序列。流程在框1130處結(jié)束。
在其它實(shí)施例中,作為編譯時(shí)執(zhí)行的代替和/或除了編譯時(shí)執(zhí)行之外,可以使用其它技術(shù)來生成互鎖信息。例如,在一些實(shí)施例中,程序(例如,圖形程序)可以允許用戶輸入對(duì)應(yīng)于存儲(chǔ)器訪問的數(shù)組或矩陣,并且程序可以被配置為基于所輸入的信息來生成(一個(gè)或多個(gè))互鎖表和/或地址表。例如,在一個(gè)實(shí)施例中,程序被配置為基于輸入h矩陣來生成beta矩陣和一個(gè)或多個(gè)互鎖表。在這些實(shí)施例中,可以完全在編譯或執(zhí)行相關(guān)聯(lián)的輸入程序之前生成互鎖信息。在其它實(shí)施例中,與存儲(chǔ)器訪問集合相關(guān)聯(lián)的各種程序、數(shù)組、矩陣或其它信息中的任何信息可以被輸入到用于配置互鎖存儲(chǔ)器的程序。
在各種實(shí)施例中,信息(例如,互鎖信息和/或(一個(gè)或多個(gè))地址表)可以在各種適當(dāng)?shù)臅r(shí)間中的任何時(shí)間被傳送到互鎖存儲(chǔ)器。例如,該信息可以在程序執(zhí)行的開始或者在程序運(yùn)行的時(shí)候被傳送。在一些實(shí)施例中,序列和/或互鎖信息可以在執(zhí)行期間被更新,以適應(yīng)變化的條件或改進(jìn)一個(gè)或多個(gè)性能度量。示例性性能度量包括但不限于:吞吐量、延遲、功耗、可靠性、資源利用率和誤比特率。
性能估計(jì)
在一些實(shí)施例中,程序(例如,圖形程序)被配置為對(duì)用于輸入程序或存儲(chǔ)器訪問操作序列的互鎖存儲(chǔ)器550運(yùn)行周期準(zhǔn)確模擬。在一些實(shí)施例中,周期準(zhǔn)確模擬是基于對(duì)存儲(chǔ)器操作序列和存儲(chǔ)器訪問的流水線化的本質(zhì)的了解來實(shí)現(xiàn)或執(zhí)行的。例如,可以為特定的訪問序列確定停滯的次數(shù)和用于每次停滯的周期數(shù)。在一些實(shí)施例中,可以基于這樣的模擬來生成性能估計(jì)。在一些實(shí)施例中,存儲(chǔ)器訪問序列可以基于性能估計(jì)被重新排序,以改進(jìn)性能。
圖12示出了示出用于基于性能建模來生成存儲(chǔ)器訪問操作的重新布置或重新排序的序列的方法的一個(gè)實(shí)施例的流程圖。圖12中所示的方法可以與本文公開的計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件中的任何計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件等結(jié)合使用。在各種實(shí)施例中,所示的方法元素中的一些方法元素可以并發(fā)地執(zhí)行、以與所示的次序不同的次序執(zhí)行、或者可以被省略。還可以根據(jù)期望執(zhí)行附加的方法元素。流程開始于框1210。
在框1210處,確定性能估計(jì)。性能估計(jì)可以指示使用互鎖存儲(chǔ)器550執(zhí)行存儲(chǔ)器訪問操作序列所需的估計(jì)的周期數(shù)。流程前進(jìn)到判定框1220。
在判定框1220處,確定性能估計(jì)是否是可接受的。在一些實(shí)施例中,該確定基于是否已經(jīng)執(zhí)行了框1210-1230的特定數(shù)量的迭代。在一些實(shí)施例中,該確定基于期望的性能估計(jì)或某些其它閾值。在一些實(shí)施例中,最佳的排序可以是可接受的,而在其它實(shí)施例中,例如,基于某些啟發(fā)式方法,次優(yōu)的排序可以是可接受的。如果性能是可接受的,則流程前進(jìn)到框1240并且流程結(jié)束。否則,流程前進(jìn)到框1230。
在框1230處,存儲(chǔ)器訪問操作序列被重新布置或重新排序。上文參考圖6a-6c討論了這樣的重新排序的一個(gè)示例。流程前進(jìn)到框1210。在一些實(shí)施例中,重新布置的序列和/或性能估計(jì)被存儲(chǔ),并且基于性能估計(jì)選擇重新布置的序列中的一個(gè)重新布置的序列。在一些實(shí)施例中,所選擇的序列被用于編譯程序和/或生成用于互鎖存儲(chǔ)器550的一個(gè)或多個(gè)互鎖表。
圖13示出了示出用于配置互鎖存儲(chǔ)器系統(tǒng)的方法的一個(gè)實(shí)施例的流程圖。圖13中所示的方法可以與本文公開的計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件中的任何計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件等結(jié)合使用。在各種實(shí)施例中,所示的方法元素中的一些方法元素可以并發(fā)地執(zhí)行、以與所示的次序不同的次序執(zhí)行、或者可以被省略。還可以根據(jù)期望執(zhí)行附加的方法元素。流程開始于框1310。
在框1310處,確定用于程序的存儲(chǔ)器訪問序列。在一些實(shí)施例中,該序列是基于對(duì)輸入程序的編譯來確定的,例如按照上面所討論的圖11的方法的實(shí)施例。在一些實(shí)施例中,該序列可以被重新排序,以改進(jìn)互鎖存儲(chǔ)器550的性能。流程前進(jìn)到框1320。
在框1320處,基于存儲(chǔ)器訪問序列生成指定存儲(chǔ)器訪問約束的信息。在該實(shí)施例中,該信息可用于避免存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn)。在一些實(shí)施例中,該信息包括一個(gè)或多個(gè)互鎖表。流程前進(jìn)到框1330。
在框1330處,使用該信息來配置電路系統(tǒng)。在該實(shí)施例中,電路系統(tǒng)被包括在存儲(chǔ)器中或耦接到存儲(chǔ)器。在該實(shí)施例中,電路系統(tǒng)在配置之后是可操作的,以對(duì)存儲(chǔ)器執(zhí)行與存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,同時(shí)避免存儲(chǔ)器訪問冒險(xiǎn)。在該實(shí)施例中,電路系統(tǒng)被配置為避免存儲(chǔ)器訪問冒險(xiǎn),而無需接收指示存儲(chǔ)器訪問冒險(xiǎn)的其它信息(例如,程序可以發(fā)送存儲(chǔ)器訪問請(qǐng)求序列以供流水線化的執(zhí)行,而無需指示存儲(chǔ)器訪問冒險(xiǎn),并且在發(fā)送依賴的訪問之前無需等待特定存儲(chǔ)器訪問完成)。在一些實(shí)施例中,配置是使用一個(gè)或多個(gè)可編程硬件元件執(zhí)行的。在一些實(shí)施例中,配置是通過將值下載到被包括在互鎖存儲(chǔ)器550中和/或耦接到互鎖存儲(chǔ)器550的一個(gè)或多個(gè)存儲(chǔ)元件(例如,一個(gè)或多個(gè)隨機(jī)存取存儲(chǔ)器(ram)和/或一個(gè)或多個(gè)只讀存儲(chǔ)器(rom))中來執(zhí)行的。在一些實(shí)施例中,電路系統(tǒng)還被配置為具有用于使用各種適當(dāng)技術(shù)中的任何技術(shù)對(duì)存儲(chǔ)器訪問進(jìn)行自尋址的地址信息。在一些實(shí)施例中,基于到圖形程序的各種輸入來自動(dòng)執(zhí)行方法1300。流程在框1330處結(jié)束。
附加的互鎖存儲(chǔ)器實(shí)施例
圖14示出了示出被配置為實(shí)現(xiàn)互鎖存儲(chǔ)器的系統(tǒng)1400的一個(gè)實(shí)施例的框圖。圖15a-b和圖16a-b示出了在一些實(shí)施例中與系統(tǒng)1400相關(guān)聯(lián)的示例性互鎖表、執(zhí)行時(shí)間線和方法。在所示實(shí)施例中,系統(tǒng)1400包括存儲(chǔ)器1410和冒險(xiǎn)電路系統(tǒng)1420。在一些實(shí)施例中,存儲(chǔ)器1410是共享存儲(chǔ)器。
在所示實(shí)施例中,冒險(xiǎn)電路系統(tǒng)1420被配置為接收讀和寫請(qǐng)求以及確定何時(shí)準(zhǔn)許它們,以便基于寫互鎖表1470和讀互鎖表1480來解決冒險(xiǎn)。在一些實(shí)施例中,冒險(xiǎn)電路系統(tǒng)1420被集成到包括存儲(chǔ)器1410的存儲(chǔ)器系統(tǒng)中。在所示實(shí)施例中,冒險(xiǎn)電路系統(tǒng)1420包括寫互鎖表1470、讀互鎖表1480以及被配置為維持用于寫指針1430、讀指針1440、寫令牌1450和讀令牌1460的值的電路系統(tǒng)。在各種實(shí)施例中,冒險(xiǎn)電路系統(tǒng)可以分布在流水線化的數(shù)據(jù)路徑的元件之間。在一些實(shí)施例中,由寫互鎖表1470和讀互鎖表1480指定的信息可以不被直接存儲(chǔ),而是可以代替地被用于配置冒險(xiǎn)電路系統(tǒng),以執(zhí)行下面描述的各種功能。
在所示實(shí)施例中,寫令牌1450和讀令牌1460指示假設(shè)令牌不遞增,則在下一個(gè)冒險(xiǎn)之前可以分別執(zhí)行多少個(gè)讀或?qū)憽@?,如果讀令牌1460的值為3,則假設(shè)該值不會(huì)由于此期間的寫而遞增,那么在潛在的冒險(xiǎn)之前可以執(zhí)行三個(gè)讀。
在所示實(shí)施例中,寫指針1430和讀指針1440指示在存儲(chǔ)器訪問序列中已經(jīng)執(zhí)行了多少個(gè)每種類型的操作。在一些實(shí)施例中,寫指針1430和讀指針1440在執(zhí)行給定的程序之前被初始化為零,并且對(duì)于每個(gè)寫和讀分別遞增。
在所示實(shí)施例中,寫互鎖表1470和讀互鎖表1480指示在特定的讀或?qū)懖僮魍瓿蓵r(shí)要添加到讀令牌1460或?qū)懥钆?450的值。這些表可以使用編譯時(shí)執(zhí)行生成、基于用戶輸入生成、為特定數(shù)組或矩陣硬編碼等。下面參考圖15a-b討論用于這些表的值的示例性實(shí)施例。
在所示實(shí)施例中,冒險(xiǎn)電路系統(tǒng)1420被配置為向存儲(chǔ)器1410提供寫地址信號(hào)、寫使能信號(hào)、讀地址信號(hào)和讀使能信號(hào)。在一些實(shí)施例中,冒險(xiǎn)電路系統(tǒng)1420是自尋址的并且在存儲(chǔ)器操作序列的執(zhí)行期間不接收地址信息。在其它實(shí)施例中,地址被包括在讀和寫請(qǐng)求中。
圖15a-b示出了用于使用系統(tǒng)1400的不同的示例性存儲(chǔ)器訪問操作序列的互鎖表和流水線化的執(zhí)行的示例性實(shí)施例。這些圖示出重新布置存儲(chǔ)器訪問序列(例如,在所示實(shí)施例中,重新布置beta矩陣1510以產(chǎn)生beta矩陣1550)可以提高使用互鎖存儲(chǔ)器的存儲(chǔ)器訪問的流水線化的性能。
在所示實(shí)施例中,beta矩陣1510包括兩層,其中每層包括三個(gè)塊。在所示實(shí)施例中,使用陰影塊示出每個(gè)表的第二層中的位置。在所示實(shí)施例中,通過對(duì)beta矩陣1510的第一層重新排序來生成beta矩陣1550。
執(zhí)行圖示出了對(duì)于beta矩陣1510和1550中的每個(gè)beta矩陣的存儲(chǔ)器訪問的示例性流水線化執(zhí)行。在所示實(shí)施例中,在完成對(duì)于層2的存儲(chǔ)器訪問后,執(zhí)行再次對(duì)于層1開始。圖15a-b示出了重新布置存儲(chǔ)器訪問操作的次序可以改進(jìn)性能,因?yàn)橛糜谏蒪eta矩陣1550的重新排序具有相對(duì)于beta矩陣1510的提高的吞吐量。
在所示實(shí)施例中,寫互鎖表1520和1560以及讀互鎖表1530和1570包括指示在完成beta矩陣中的一個(gè)beta矩陣中的對(duì)應(yīng)操作后要添加的令牌數(shù)的條目。例如,在完成對(duì)beta矩陣1510的層1的地點(diǎn)0的寫入后,添加兩個(gè)讀令牌,從而允許在用于避免下一個(gè)潛在的冒險(xiǎn)的停滯之前發(fā)生至少兩個(gè)讀。作為另一個(gè)示例,在完成對(duì)beta矩陣1510的層2的地點(diǎn)4的寫入后,添加四個(gè)讀令牌,從而允許在用于避免下一個(gè)冒險(xiǎn)的停滯之前發(fā)生至少四個(gè)讀。在所示實(shí)施例中,每個(gè)讀操作添加單個(gè)寫令牌。應(yīng)當(dāng)指出,在所示實(shí)施例中,寫入不在添加令牌之后立即發(fā)生。在該實(shí)施例中,這是ldpc解碼操作的本質(zhì)的結(jié)果,在ldpc解碼操作中程序被配置為在寫入層中的位置中的任何位置之前讀取該層中的所有位置。因此,在該示例中,當(dāng)接收到第一寫請(qǐng)求時(shí),基于三個(gè)讀,寫令牌值已經(jīng)遞增為三。
圖16a-b示出了用于互鎖存儲(chǔ)器系統(tǒng)(諸如例如,系統(tǒng)1400的實(shí)施例)的操作的方法1600和1650的示例性實(shí)施例。圖16a-b中所示的方法可以與本文公開的計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件中的任何計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件等結(jié)合使用。在各種實(shí)施例中,所示的方法元素中的一些方法元素可以并發(fā)地執(zhí)行、以與所示的次序不同的次序執(zhí)行、或者可以被省略。還可以根據(jù)期望執(zhí)行附加的方法元素。流程對(duì)于圖16a開始于框1602并且對(duì)于圖16b開始于框1652。在一些實(shí)施例中,(至少部分地)并行執(zhí)行這些方法。
參考圖16a,在框1602處,冒險(xiǎn)電路系統(tǒng)初始化讀令牌值。在圖15a-b的實(shí)施例中,讀令牌被初始化為值三,而寫令牌被初始化為值零。流程前進(jìn)到框1604。
在框1604處,冒險(xiǎn)電路系統(tǒng)1420等待讀請(qǐng)求。流程前進(jìn)到判定框1606。
在判定框1606處,冒險(xiǎn)電路系統(tǒng)1420確定讀令牌是否大于零。如果它大于零,則流程前進(jìn)到框1608。否則,流程保持在判定框1606,直到讀令牌大于零為止。如圖16b中來自框1666的虛線箭頭所示,響應(yīng)于寫操作,讀令牌可以變得大于零,例如,因?yàn)閷懖僮鞯膱?zhí)行去除了冒險(xiǎn)。
在框1608處,冒險(xiǎn)電路系統(tǒng)1420基于讀指針從讀互鎖表1470提取令牌值。在自尋址實(shí)施例中,冒險(xiǎn)電路系統(tǒng)1420還被配置為從地址表檢索讀地址。應(yīng)當(dāng)指出,在一些實(shí)施例中,互鎖表可以被配置為存儲(chǔ)地址以及指示存儲(chǔ)器約束。在這些實(shí)施例中,除了互鎖信息之外,還可以從互鎖表檢索地址。流程前進(jìn)到框1610。
在框1610處,冒險(xiǎn)電路系統(tǒng)1420使讀指針遞增。流程前進(jìn)到框1612。
在框1612處,冒險(xiǎn)電路系統(tǒng)1420使讀令牌遞減。在該實(shí)施例中,每個(gè)讀可以被認(rèn)為是消耗讀令牌,以使得僅當(dāng)讀令牌可用時(shí)才允許發(fā)生讀取。流程前進(jìn)到框1614。
在框1614處,冒險(xiǎn)電路系統(tǒng)1420執(zhí)行所請(qǐng)求的讀操作。流程前進(jìn)到框1616。
在框1616處,冒險(xiǎn)電路系統(tǒng)1420將從框1608檢索出的令牌值添加到寫令牌。如由圖16b的從框1616到判定框1656的虛線所示,因?yàn)樵诳?614中讀取的執(zhí)行可以去除冒險(xiǎn),所以這種遞增可以允許等待的寫入繼續(xù)進(jìn)行。流程返回到框1604。
參考圖16b,在框1652處,冒險(xiǎn)電路系統(tǒng)1420初始化寫令牌值。流程前進(jìn)到框1654。
在框1654處,冒險(xiǎn)電路系統(tǒng)1420等待寫請(qǐng)求。流程前進(jìn)到判定框1656。
在判定框1656處,冒險(xiǎn)電路系統(tǒng)1420確定寫令牌是否大于零。如果它大于零,則流程前進(jìn)到框1658。否則,流程保留在判定框1656處,直到寫令牌大于零為止。
在框1658處,冒險(xiǎn)電路系統(tǒng)1420基于寫指針從寫互鎖表1480提取令牌值。在自尋址實(shí)施例中,冒險(xiǎn)電路系統(tǒng)1420還被配置為從地址表檢索寫地址。流程前進(jìn)到框1660。
在框1660處,冒險(xiǎn)電路系統(tǒng)1420使寫指針遞增。流程前進(jìn)到框1662。
在框1662處,冒險(xiǎn)電路系統(tǒng)1420使寫令牌遞減。在該實(shí)施例中,每個(gè)寫可以被認(rèn)為是消耗寫令牌,以使得僅當(dāng)寫令牌可用時(shí)才允許發(fā)生寫入。流程前進(jìn)到框1664。
在框1664處,冒險(xiǎn)電路系統(tǒng)1420執(zhí)行所請(qǐng)求的寫操作。流程前進(jìn)到框1666。
在框1666處,冒險(xiǎn)電路系統(tǒng)1420將從框1608檢索出的令牌值添加到讀令牌。如由圖16a的從框1666到判定框1606的虛線所示,這種遞增可以允許等待的讀取繼續(xù)進(jìn)行,因?yàn)樵诳?654中寫入的執(zhí)行可以去除冒險(xiǎn)。流程返回到框1654。
應(yīng)當(dāng)指出,圖14-16b示出了用于互鎖表的示例性的基于令牌的技術(shù),而圖9示出了示例性的基于計(jì)數(shù)器的技術(shù)(例如,互鎖表900中的每個(gè)條目指示在給定訪問被允許繼續(xù)進(jìn)行之前必須發(fā)生的存儲(chǔ)器操作的計(jì)數(shù)或個(gè)數(shù))。在其它實(shí)施例中,可以使用各種其它技術(shù)來使用互鎖表指示冒險(xiǎn)以及基于互鎖表停滯存儲(chǔ)器訪問的執(zhí)行。本文出于示例性目的而提供所公開的實(shí)施例,并且所公開的實(shí)施例不旨在限制其它實(shí)施例中的互鎖表實(shí)現(xiàn)。
在一些實(shí)施例中,互鎖存儲(chǔ)器系統(tǒng)可以被配置為具有用于多個(gè)不同程序的存儲(chǔ)器訪問約束的集合。在這些實(shí)施例中,不同程序中的一個(gè)不同程序的指示可以被發(fā)送到互鎖存儲(chǔ)器系統(tǒng),并且對(duì)應(yīng)的存儲(chǔ)器訪問約束可以被用于處理針對(duì)給定程序的存儲(chǔ)器訪問請(qǐng)求。在各種可編程實(shí)施例中,被配置為具有用于第一程序的第一存儲(chǔ)器訪問約束集合的電路系統(tǒng)可以被重新配置為具有用于第二程序的不同的第二存儲(chǔ)器訪問約束集合。
可重新配置的電路系統(tǒng)在各種應(yīng)用中可以是有利的。例如,包括可重新配置的互鎖電路系統(tǒng)的用戶裝備設(shè)備(ue)可以接收用于ldpc支持的通信的新h矩陣或beta矩陣。在這些實(shí)施例中,ue可以被配置為基于接收到的矩陣來生成用于實(shí)現(xiàn)ldpc解碼的程序。在其它實(shí)施例中,程序可以被直接傳送到ue。在這些實(shí)施例中,ue可以被配置為將對(duì)應(yīng)于矩陣的存儲(chǔ)器訪問重新排序,以便降低流水線化執(zhí)行時(shí)間。在這些實(shí)施例中,ue被配置為將冒險(xiǎn)電路系統(tǒng)配置為具有用于通信的新的存儲(chǔ)器訪問約束集合。在一些實(shí)施例中,ue被配置為接收用于程序的存儲(chǔ)器訪問約束集合,而不是在內(nèi)部生成它們。在各種實(shí)施例中,ue可以使用該程序和被配置為具有存儲(chǔ)器訪問約束的互鎖存儲(chǔ)器來解碼傳入的無線傳輸。在一些實(shí)施例中,包括被配置為存儲(chǔ)用于多個(gè)程序的存儲(chǔ)器訪問約束的互鎖存儲(chǔ)器的ue可以被配置為(例如當(dāng)設(shè)備經(jīng)由不同的網(wǎng)絡(luò)進(jìn)行通信時(shí))對(duì)于不同的通信使用不同的奇偶校驗(yàn)技術(shù)。
現(xiàn)在參考圖17,示出了用于操作互鎖存儲(chǔ)器的方法的一個(gè)概括性實(shí)施例1700。圖17中所示的方法可以與本文公開的計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件中的任何計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件等結(jié)合使用。在各種實(shí)施例中,所示的方法元素中的一些方法元素可以并發(fā)地執(zhí)行、以與所示的次序不同的次序執(zhí)行、或者可以被省略。還可以根據(jù)期望執(zhí)行附加的方法元素。流程開始于框1710。
在框1710處,接收針對(duì)存儲(chǔ)器的存儲(chǔ)器訪問請(qǐng)求序列。在一些實(shí)施例中,程序的執(zhí)行生成存儲(chǔ)器訪問請(qǐng)求序列。流程前進(jìn)到框1720。
在框1720處,存儲(chǔ)器訪問請(qǐng)求由被配置為具有用于該存儲(chǔ)器訪問請(qǐng)求的存儲(chǔ)器訪問約束的電路系統(tǒng)準(zhǔn)許。在該實(shí)施例中,電路系統(tǒng)被配置為以存儲(chǔ)器訪問約束為依據(jù)來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求,由此避免與存儲(chǔ)器訪問請(qǐng)求序列對(duì)應(yīng)的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn)。電路系統(tǒng)可以包括被配置為存儲(chǔ)指定存儲(chǔ)器訪問約束的信息的一個(gè)或多個(gè)存儲(chǔ)元件。電路系統(tǒng)可以是可編程的,以基于存儲(chǔ)器訪問約束來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求(例如,電路系統(tǒng)可以包括可編程硬件元件)。電路系統(tǒng)可以專用于基于存儲(chǔ)器訪問約束來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求(例如,電路系統(tǒng)可以是asic)。流程在框1720處結(jié)束。
現(xiàn)在參考圖18,示出了用于將存儲(chǔ)器訪問序列重新排序的方法的一個(gè)概括性實(shí)施例1800。圖18中所示的方法可以與本文公開的計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件中的任何計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件等結(jié)合使用。在各種實(shí)施例中,所示的方法元素中的一些方法元素可以并發(fā)地執(zhí)行、以與所示的次序不同的次序執(zhí)行、或者可以被省略。還可以根據(jù)期望執(zhí)行附加的方法元素。流程開始于框1810。
在框1810處,存儲(chǔ)指定的存儲(chǔ)器訪問序列。該指定的序列可以從另一個(gè)計(jì)算系統(tǒng)接收或者由存儲(chǔ)該序列的計(jì)算系統(tǒng)例如使用編譯時(shí)執(zhí)行生成。在該實(shí)施例中,指定的序列對(duì)應(yīng)于要執(zhí)行的功能(諸如例如ldpc解碼)并且具有第一存儲(chǔ)器訪問約束。流程前進(jìn)到框1820。
在框1820處,指定的序列被重新排序,以創(chuàng)建具有不同的第二存儲(chǔ)器訪問約束的重新排序的存儲(chǔ)器訪問序列。在該實(shí)施例中,重新排序的存儲(chǔ)器訪問序列可用于訪問存儲(chǔ)器以執(zhí)行功能。重新排序可以改進(jìn)使用互鎖存儲(chǔ)器的存儲(chǔ)器訪問的性能,如上面參考圖6c和圖12所討論的。可以多次執(zhí)行重新排序,并且可以基于一個(gè)或多個(gè)標(biāo)準(zhǔn)來選擇特定的重新排序的序列。重新排序的存儲(chǔ)器訪問序列可以具有比原始存儲(chǔ)器訪問序列高的存儲(chǔ)器訪問效率。例如,重新排序的序列可用于在比被用于使用原始序列執(zhí)行功能的時(shí)鐘周期數(shù)少的時(shí)鐘周期數(shù)中執(zhí)行功能。流程在框1820處結(jié)束。
在一些實(shí)施例中,計(jì)算系統(tǒng)可以編譯程序,以實(shí)現(xiàn)重新排序的存儲(chǔ)器訪問序列。程序的執(zhí)行可以生成與重新排序的存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求序列??梢允褂没ユi存儲(chǔ)器來執(zhí)行存儲(chǔ)器訪問請(qǐng)求。
現(xiàn)在參考圖19,示出了用于操作自尋址存儲(chǔ)器的方法的一個(gè)概括性實(shí)施例1900。圖19中所示的方法可以與本文公開的計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件中的任何計(jì)算機(jī)系統(tǒng)、設(shè)備、電路、元件或組件等結(jié)合使用。在各種實(shí)施例中,所示的方法元素中的一些方法元素可以并發(fā)地執(zhí)行、以與所示的次序不同的次序執(zhí)行、或者可以被省略。還可以根據(jù)期望執(zhí)行附加的方法元素。流程開始于框1910。
在框1910處,接收與指定存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,但是存儲(chǔ)器訪問請(qǐng)求不包括地址信息。例如,存儲(chǔ)器訪問請(qǐng)求可以由ldpc解碼器程序生成。請(qǐng)求可以指定是否期望讀或?qū)懖僮鳎遣恢付ㄒx取/寫入的地點(diǎn)。流程前進(jìn)到框1920。
在框1920處,地址被指派給用于指定存儲(chǔ)器訪問序列的存儲(chǔ)器訪問請(qǐng)求。這可以由被配置為具有用于指定存儲(chǔ)器訪問序列的地址信息的尋址電路系統(tǒng)執(zhí)行。尋址電路系統(tǒng)可以是可編程的或可以專用于特定序列。流程前進(jìn)到框1930。
在框1930處,使用指派的地址來執(zhí)行存儲(chǔ)器訪問序列。流程在框1930處結(jié)束。
現(xiàn)在參考圖20,示出了用于對(duì)稱矩陣2010的cholesky因子分解的存儲(chǔ)器訪問序列2020。在所示實(shí)施例中,對(duì)稱矩陣2010被劃分為2×2個(gè)子矩陣塊b0-b3。序列2020捕獲對(duì)于這些子矩陣塊的choleskey因子分解算法的讀/修改/寫序列。在所示實(shí)施例中,對(duì)于第二行,例如,在前進(jìn)到行三之前,b2和b0被讀取,潛在地被修改并且寫入。在其它實(shí)施例中,可以為各種矩陣操作中的任何矩陣操作確定類似的序列。在一些實(shí)施例中,本文描述的各種技術(shù)可以被用于這樣的序列。例如,可以為序列2020生成互鎖信息,序列2020可以被重新布置以減少存儲(chǔ)器訪問冒險(xiǎn),可以為序列2020生成地址,等等。
本文的各種實(shí)施例是參考非暫態(tài)計(jì)算機(jī)可讀介質(zhì)來描述的,該非暫態(tài)計(jì)算機(jī)可讀介質(zhì)具有存儲(chǔ)在其上的指令,其中這些指令可由計(jì)算設(shè)備執(zhí)行,以執(zhí)行各種操作。在各種實(shí)施例中,計(jì)算機(jī)程序可以具有用于執(zhí)行任何這樣的操作的指令,而系統(tǒng)可以基于計(jì)算機(jī)程序中指令的執(zhí)行使得操作被執(zhí)行。
以下編號(hào)的段落描述了關(guān)于避免存儲(chǔ)器訪問冒險(xiǎn)的附加實(shí)施例。
1.一種系統(tǒng),包括:
用于接收針對(duì)存儲(chǔ)器的存儲(chǔ)器訪問請(qǐng)求序列的裝置,其中存儲(chǔ)器訪問請(qǐng)求序列被配置為訪問與矩陣中的條目相關(guān)聯(lián)的地點(diǎn),其中用于接收存儲(chǔ)器訪問請(qǐng)求序列的裝置被配置為具有用于該存儲(chǔ)器訪問請(qǐng)求序列的存儲(chǔ)器訪問約束;以及
用于以存儲(chǔ)器訪問約束為依據(jù)來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求序列,由此避免與存儲(chǔ)器訪問請(qǐng)求序列對(duì)應(yīng)的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn)的裝置。
2.如實(shí)施例1所述的系統(tǒng),還包括:
流水線裝置,用于使存儲(chǔ)器訪問序列的執(zhí)行流水線化;
其中用于準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求序列的裝置被配置為基于存儲(chǔ)器訪問約束來停滯存儲(chǔ)器訪問請(qǐng)求序列的流水線化的執(zhí)行。
3.一種具有用于執(zhí)行操作的指令的計(jì)算機(jī)程序,所述操作包括:
接收針對(duì)存儲(chǔ)器的存儲(chǔ)器訪問請(qǐng)求序列,其中第一電路系統(tǒng)被配置為具有用于該存儲(chǔ)器訪問請(qǐng)求序列的存儲(chǔ)器訪問約束;以及
以存儲(chǔ)器訪問約束為依據(jù)來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求,由此避免與存儲(chǔ)器訪問請(qǐng)求序列對(duì)應(yīng)的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn)。
4.如實(shí)施例3所述的計(jì)算機(jī)程序,其中以存儲(chǔ)器訪問約束為依據(jù)來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求包括基于存儲(chǔ)器訪問約束來停滯存儲(chǔ)器訪問序列的流水線化的執(zhí)行。
5.如實(shí)施例3所述的計(jì)算機(jī)程序,其中操作還包括:
維護(hù)用于對(duì)存儲(chǔ)器的讀訪問的讀計(jì)數(shù)器和用于對(duì)存儲(chǔ)器的寫訪問的寫計(jì)數(shù)器;
其中以存儲(chǔ)器訪問約束為依據(jù)來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求是基于讀計(jì)數(shù)器和寫計(jì)數(shù)器的。
6.如實(shí)施例3所述的計(jì)算機(jī)程序,其中存儲(chǔ)器訪問約束指示在執(zhí)行特定的寫操作之前必須為存儲(chǔ)器訪問序列獲得的讀指針值。
7.如實(shí)施例3所述的計(jì)算機(jī)程序,其中操作還包括使用可編程電路系統(tǒng)實(shí)現(xiàn)存儲(chǔ)器訪問約束。
以下編號(hào)的段落描述了關(guān)于具有存儲(chǔ)器訪問約束的配置電路的附加實(shí)施例。
1.一種方法,包括:
由計(jì)算系統(tǒng)為程序確定存儲(chǔ)器訪問序列;
由計(jì)算系統(tǒng)基于存儲(chǔ)器訪問序列來生成指定存儲(chǔ)器訪問約束的信息,其中該信息可用于避免存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn);以及
由計(jì)算系統(tǒng)使用該信息配置第一電路系統(tǒng),其中第一電路系統(tǒng)被包括在存儲(chǔ)器中或耦接到存儲(chǔ)器,其中在所述配置之后,第一電路系統(tǒng)可操作以對(duì)存儲(chǔ)器執(zhí)行與存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,同時(shí)避免存儲(chǔ)器訪問冒險(xiǎn),其中第一電路系統(tǒng)被配置為避免存儲(chǔ)器訪問冒險(xiǎn)被實(shí)現(xiàn),而無需接收指示存儲(chǔ)器訪問冒險(xiǎn)的其它信息。
2.如實(shí)施例1所述的方法,其中存儲(chǔ)器訪問序列包括對(duì)于由稀疏矩陣的不同行指示的地點(diǎn)的讀、修改和寫操作,其中對(duì)于第一行的地點(diǎn)的讀、修改和寫操作要在對(duì)于第二行的該地點(diǎn)的讀操作之前完成。
3.如實(shí)施例1所述的方法,其中存儲(chǔ)器訪問序列基于低密度奇偶校驗(yàn)(ldpc)矩陣。
4.如實(shí)施例3所述的方法,其中計(jì)算系統(tǒng)是移動(dòng)設(shè)備,所述方法還包括:
由移動(dòng)設(shè)備接收更新后的ldpc矩陣,其中確定、生成和配置是基于更新后的ldpc矩陣來執(zhí)行的。
5.如實(shí)施例4所述的方法,還包括:
基于ldpc矩陣來生成程序;以及
使用該程序來解碼傳入的無線傳輸。
6.如實(shí)施例1所述的方法,還包括:
將電路系統(tǒng)配置為具有對(duì)應(yīng)于不同程序的多個(gè)存儲(chǔ)器訪問約束集合。
7.如實(shí)施例1所述的方法,其中配置是使用一個(gè)或多個(gè)可編程硬件元件來執(zhí)行的。
8.如實(shí)施例1所述的方法,其中配置是通過將信息傳送到表來執(zhí)行的。
9.如實(shí)施例1所述的方法,其中確定是通過編譯包括存儲(chǔ)器訪問序列的輸入程序來執(zhí)行的。
10.如實(shí)施例9所述的方法,其中編譯包括執(zhí)行輸入程序的部分,以確定存儲(chǔ)器訪問序列和存儲(chǔ)器訪問約束。
11.如實(shí)施例1所述的方法,其中存儲(chǔ)器訪問約束指示以下項(xiàng)中的一個(gè)或多個(gè):
在執(zhí)行寫操作之前必須發(fā)生的讀操作的數(shù)量;
在執(zhí)行讀操作之前必須發(fā)生的寫操作的數(shù)量;或者
用于存儲(chǔ)器訪問序列中的特定存儲(chǔ)器訪問操作的令牌值,其中令牌值指示基于特定存儲(chǔ)器訪問操作的執(zhí)行將允許的后續(xù)讀或?qū)懖僮鞯臄?shù)量。
12.一種系統(tǒng),包括:
一個(gè)或多個(gè)處理器;以及
一個(gè)或多個(gè)存儲(chǔ)器,該一個(gè)或多個(gè)存儲(chǔ)器具有存儲(chǔ)在其上的可由該一個(gè)或多個(gè)處理器執(zhí)行的程序指令,以使得系統(tǒng)執(zhí)行操作,這些操作包括:
為程序確定存儲(chǔ)器訪問序列;
基于存儲(chǔ)器訪問序列生成指定存儲(chǔ)器訪問約束的信息,其中該存儲(chǔ)器訪問約束可用于避免該存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn);以及
使用該信息配置第一電路系統(tǒng),其中第一電路系統(tǒng)被包括在存儲(chǔ)器中或耦接到存儲(chǔ)器,其中在所述配置之后,第一電路系統(tǒng)可操作以對(duì)存儲(chǔ)器執(zhí)行與存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,同時(shí)避免存儲(chǔ)器訪問冒險(xiǎn),其中第一電路系統(tǒng)被配置為避免存儲(chǔ)器訪問冒險(xiǎn)被實(shí)現(xiàn),而無需接收指示存儲(chǔ)器訪問冒險(xiǎn)的其它信息。
13.如實(shí)施例12所述的系統(tǒng),其中存儲(chǔ)器訪問序列包括對(duì)于由稀疏矩陣的不同行指示的地點(diǎn)的讀、修改和寫操作,其中對(duì)于第一行的地點(diǎn)的讀、修改和寫操作要在對(duì)于第二行的該地點(diǎn)的讀操作之前完成。
14.如實(shí)施例12所述的系統(tǒng),其中系統(tǒng)是移動(dòng)設(shè)備,其中存儲(chǔ)器訪問序列是針對(duì)用于移動(dòng)設(shè)備的無線通信的低密度奇偶校驗(yàn)矩陣的,其中操作還包括:由移動(dòng)設(shè)備接收更新后的ldpc矩陣,其中確定、生成和配置是基于更新后的ldpc矩陣來執(zhí)行的。
15.如實(shí)施例12所述的系統(tǒng),還包括:
一個(gè)或多個(gè)可編程硬件元件,其中配置是使用該一個(gè)或多個(gè)可編程硬件元件來執(zhí)行的。
16.如實(shí)施例12所述的系統(tǒng),其中確定是通過編譯包括存儲(chǔ)器訪問序列的輸入程序來執(zhí)行的。
17.如實(shí)施例16所述的系統(tǒng),其中編譯包括執(zhí)行輸入程序的部分,以確定存儲(chǔ)器訪問序列和存儲(chǔ)器訪問約束。
18.一種具有存儲(chǔ)在其上的指令的非暫態(tài)計(jì)算機(jī)可讀介質(zhì),其中該指令可由計(jì)算設(shè)備執(zhí)行以執(zhí)行操作,這些操作包括:
為程序確定存儲(chǔ)器訪問序列;
基于存儲(chǔ)器訪問序列生成指定存儲(chǔ)器訪問約束的信息,其中該存儲(chǔ)器訪問約束可用于避免該存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn);以及
使用該信息配置第一電路系統(tǒng),其中第一電路系統(tǒng)被包括在存儲(chǔ)器中或耦接到存儲(chǔ)器,其中在所述配置之后,第一電路系統(tǒng)可操作以對(duì)存儲(chǔ)器執(zhí)行與存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,同時(shí)避免存儲(chǔ)器訪問冒險(xiǎn),其中第一電路系統(tǒng)被配置為避免存儲(chǔ)器訪問冒險(xiǎn)被實(shí)現(xiàn),而無需接收指示存儲(chǔ)器訪問冒險(xiǎn)的其它信息。
19.如實(shí)施例18所述的非暫態(tài)計(jì)算機(jī)可讀介質(zhì),其中確定是通過編譯包括存儲(chǔ)器訪問序列的輸入程序來執(zhí)行的,其中編譯包括執(zhí)行輸入程序的部分,以確定存儲(chǔ)器訪問序列和存儲(chǔ)器訪問約束。
20.如實(shí)施例18所述的非暫態(tài)計(jì)算機(jī)可讀介質(zhì),其中存儲(chǔ)器訪問約束指示以下項(xiàng)中的一個(gè)或多個(gè):
在執(zhí)行寫操作之前必須發(fā)生的讀操作的數(shù)量;
在執(zhí)行讀操作之前必須發(fā)生的寫操作的數(shù)量;或者
用于存儲(chǔ)器訪問序列中的特定存儲(chǔ)器訪問操作的令牌值,其中令牌值指示基于特定存儲(chǔ)器訪問操作的執(zhí)行將允許的后續(xù)讀或?qū)懖僮鞯臄?shù)量。
21.一種系統(tǒng),包括:
用于為程序確定存儲(chǔ)器訪問序列的裝置;
用于基于存儲(chǔ)器訪問序列生成指定存儲(chǔ)器訪問約束的信息的裝置,其中該存儲(chǔ)器訪問約束可用于避免該存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn);以及
用于使用該信息配置第一電路系統(tǒng)的裝置,其中第一電路系統(tǒng)被包括在存儲(chǔ)器中或耦接到存儲(chǔ)器,其中在所述配置之后,第一電路系統(tǒng)可操作以對(duì)存儲(chǔ)器執(zhí)行與存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,同時(shí)避免存儲(chǔ)器訪問冒險(xiǎn),其中第一電路系統(tǒng)被配置為避免存儲(chǔ)器訪問冒險(xiǎn)被實(shí)現(xiàn),而無需接收指示存儲(chǔ)器訪問冒險(xiǎn)的其它信息。
22.一種具有用于執(zhí)行操作的指令的計(jì)算機(jī)程序,所述操作包括:
為程序確定存儲(chǔ)器訪問序列;
基于存儲(chǔ)器訪問序列生成指定存儲(chǔ)器訪問約束的信息,其中該信息可用于避免該存儲(chǔ)器訪問序列的存儲(chǔ)器訪問冒險(xiǎn);以及
使用該信息配置第一電路系統(tǒng),其中第一電路系統(tǒng)被包括在存儲(chǔ)器中或耦接到存儲(chǔ)器,其中在所述配置之后,第一電路系統(tǒng)可操作以對(duì)存儲(chǔ)器執(zhí)行與存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,同時(shí)避免存儲(chǔ)器訪問冒險(xiǎn),其中第一電路系統(tǒng)被配置為避免存儲(chǔ)器訪問冒險(xiǎn)被實(shí)現(xiàn),而無需接收指示存儲(chǔ)器訪問冒險(xiǎn)的其它信息。
23.如實(shí)施例22所述的計(jì)算機(jī)程序,其中存儲(chǔ)器訪問序列包括對(duì)于由稀疏矩陣的不同行指示的地點(diǎn)的讀、修改和寫操作,其中對(duì)于第一行的地點(diǎn)的讀、修改和寫操作要在對(duì)于第二行的該位置的讀操作之前完成。
24.如實(shí)施例22所述的計(jì)算機(jī)程序,其中存儲(chǔ)器訪問序列基于低密度奇偶校驗(yàn)(ldpc)矩陣。
25.如實(shí)施例22所述的計(jì)算機(jī)程序,其中存儲(chǔ)器訪問約束指示以下項(xiàng)中的一個(gè)或多個(gè):
在執(zhí)行寫操作之前必須發(fā)生的讀操作的數(shù)量;
在執(zhí)行讀操作之前必須發(fā)生的寫操作的數(shù)量;或者
用于存儲(chǔ)器訪問序列中的特定存儲(chǔ)器訪問操作的令牌值,其中令牌值指示基于特定存儲(chǔ)器訪問操作的執(zhí)行將允許的后續(xù)讀或?qū)懖僮鞯臄?shù)量。
以下編號(hào)的段落描述了關(guān)于將存儲(chǔ)器訪問序列重新排序以改進(jìn)流水線化的執(zhí)行的附加實(shí)施例:
1.一種方法,包括:
由計(jì)算系統(tǒng)存儲(chǔ)指定的存儲(chǔ)器訪問序列,其中指定的序列對(duì)應(yīng)于要執(zhí)行的功能,其中指定的存儲(chǔ)器訪問序列具有第一存儲(chǔ)器訪問約束;以及
由計(jì)算系統(tǒng)將指定的存儲(chǔ)器訪問序列重新排序,以創(chuàng)建重新排序的存儲(chǔ)器訪問序列,其中重新排序的存儲(chǔ)器訪問序列具有第二存儲(chǔ)器訪問約束,其中第二存儲(chǔ)器訪問約束與第一存儲(chǔ)器訪問約束不同;
其中重新排序的存儲(chǔ)器訪問序列可用于訪問存儲(chǔ)器以執(zhí)行功能。
2.如實(shí)施例1所述的方法,還包括:
為多個(gè)重新排序的存儲(chǔ)器訪問序列確定性能估計(jì),其中該多個(gè)重新排序的存儲(chǔ)器訪問序列基于指定的存儲(chǔ)器訪問序列并且可用于訪問存儲(chǔ)器以執(zhí)行功能;以及
基于性能估計(jì)來選擇該多個(gè)重新排序的序列中的一個(gè)重新排序的序列。
3.如實(shí)施例2所述的方法,
其中性能估計(jì)基于用于該多個(gè)重新排序的存儲(chǔ)器訪問序列中的每一個(gè)的存儲(chǔ)器訪問約束;以及
其中性能估計(jì)是基于針對(duì)使用冒險(xiǎn)電路系統(tǒng)的存儲(chǔ)器訪問的流水線化的執(zhí)行的重新排序的存儲(chǔ)器訪問序列的周期準(zhǔn)確模擬來確定的。
4.如實(shí)施例1所述的方法,還包括:
根據(jù)第二存儲(chǔ)器訪問約束來配置耦接到存儲(chǔ)器或被包括在存儲(chǔ)器中的第一電路系統(tǒng),其中所述配置配置第一電路系統(tǒng)以實(shí)現(xiàn)第二存儲(chǔ)器訪問約束。
5.如實(shí)施例4所述的方法,還包括:
執(zhí)行程序,以生成與重新排序的存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求序列;以及
由第一電路系統(tǒng)根據(jù)第二存儲(chǔ)器訪問約束來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求序列,由此避免存儲(chǔ)器訪問請(qǐng)求序列的存儲(chǔ)器冒險(xiǎn)。
6.如實(shí)施例1所述的方法,還包括:
編譯程序,以實(shí)現(xiàn)重新排序的存儲(chǔ)器訪問序列。
7.如實(shí)施例1所述的方法,
其中指定的存儲(chǔ)器訪問序列具有第一存儲(chǔ)器訪問效率;以及
其中重新排序的存儲(chǔ)器訪問序列具有更高的第二存儲(chǔ)器訪問效率。
8.如實(shí)施例1所述的方法,其中指定的存儲(chǔ)器訪問序列基于奇偶校驗(yàn)矩陣。
9.一種系統(tǒng),包括:
一個(gè)或多個(gè)處理器;以及
一個(gè)或多個(gè)存儲(chǔ)器,該一個(gè)或多個(gè)存儲(chǔ)器具有存儲(chǔ)在其上的程序指令,該程序指令可由該一個(gè)或多個(gè)處理器執(zhí)行以執(zhí)行操作,這些操作包括:
存儲(chǔ)指定的存儲(chǔ)器訪問序列,其中指定的序列對(duì)應(yīng)于要執(zhí)行的功能,其中指定的存儲(chǔ)器訪問序列具有第一存儲(chǔ)器訪問約束;
以及
將指定的存儲(chǔ)器訪問序列重新排序,以創(chuàng)建重新排序的存儲(chǔ)器訪問序列,其中重新排序的存儲(chǔ)器訪問序列具有第二存儲(chǔ)器訪問約束,其中第二存儲(chǔ)器訪問約束與第一存儲(chǔ)器訪問約束不同;
其中重新排序的存儲(chǔ)器訪問序列可用于訪問存儲(chǔ)器,以執(zhí)行功能。
10.如實(shí)施例9所述的系統(tǒng),其中操作還包括:
為多個(gè)重新排序的存儲(chǔ)器訪問序列確定性能估計(jì),其中該多個(gè)重新排序的存儲(chǔ)器訪問序列基于指定的存儲(chǔ)器訪問序列并且可用于訪問存儲(chǔ)器以執(zhí)行功能;以及
基于性能估計(jì)來選擇該多個(gè)重新排序的序列中的一個(gè)重新排序的序列。
11.如實(shí)施例9所述的系統(tǒng),其中操作還包括:
根據(jù)第二存儲(chǔ)器訪問約束來配置耦接到存儲(chǔ)器或被包括在存儲(chǔ)器中的第一電路系統(tǒng),其中所述配置配置第一電路系統(tǒng)以實(shí)現(xiàn)用于重新排序的存儲(chǔ)器訪問序列的第二存儲(chǔ)器訪問約束。
12.如實(shí)施例11所述的系統(tǒng),其中操作還包括:
生成與重新排序的存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求序列;以及
由第一電路系統(tǒng)根據(jù)第二存儲(chǔ)器訪問約束來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求序列,由此避免存儲(chǔ)器訪問請(qǐng)求序列的存儲(chǔ)器冒險(xiǎn)。
13.如實(shí)施例9所述的系統(tǒng),其中操作還包括:
編譯程序,以實(shí)現(xiàn)重新排序的存儲(chǔ)器訪問序列。
14.如實(shí)施例9所述的系統(tǒng),其中操作還包括:
使用輸入程序的編譯時(shí)執(zhí)行來確定指定的存儲(chǔ)器訪問序列。
15.如實(shí)施例9所述的系統(tǒng),
其中指定的存儲(chǔ)器訪問序列具有第一存儲(chǔ)器訪問效率;以及
其中重新排序的存儲(chǔ)器訪問序列具有更高的第二存儲(chǔ)器訪問效率。
16.如實(shí)施例9所述的系統(tǒng),其中指定的存儲(chǔ)器訪問序列對(duì)應(yīng)于beta矩陣中的條目,其中beta矩陣是基于奇偶校驗(yàn)矩陣生成的。
17.一種具有存儲(chǔ)在其上的指令的非暫態(tài)計(jì)算機(jī)可讀介質(zhì),其中該指令可由計(jì)算設(shè)備執(zhí)行以執(zhí)行操作,這些操作包括:
存儲(chǔ)指定的存儲(chǔ)器訪問序列,其中指定的序列對(duì)應(yīng)于要執(zhí)行的功能,其中指定的存儲(chǔ)器訪問序列具有第一存儲(chǔ)器訪問約束;以及
將指定的存儲(chǔ)器訪問序列重新排序,以創(chuàng)建重新排序的存儲(chǔ)器訪問序列,其中重新排序的存儲(chǔ)器訪問序列具有第二存儲(chǔ)器訪問約束,其中第二存儲(chǔ)器訪問約束與第一存儲(chǔ)器訪問約束不同;
其中重新排序的存儲(chǔ)器訪問序列可用于訪問存儲(chǔ)器以執(zhí)行功能。
18.如實(shí)施例17所述的非暫態(tài)計(jì)算機(jī)可讀介質(zhì),其中操作還包括:
將指定的存儲(chǔ)器訪問序列重新排序,以創(chuàng)建一個(gè)或多個(gè)附加的、不同的重新排序的存儲(chǔ)器訪問序列;
為重新排序的存儲(chǔ)器訪問序列和該一個(gè)或多個(gè)附加的、不同的重新排序的存儲(chǔ)器訪問序列確定性能估計(jì),其中性能估計(jì)基于用于重新排序的序列和該一個(gè)或多個(gè)不同的、重新排序的序列的存儲(chǔ)器訪問約束;以及
基于性能估計(jì)來選擇重新排序的序列和該一個(gè)或多個(gè)附加的、不同的重新排序的序列中的一個(gè)序列。
19.如實(shí)施例17所述的非暫態(tài)計(jì)算機(jī)可讀介質(zhì),其中操作還包括:
根據(jù)第二存儲(chǔ)器訪問約束來配置被耦接到存儲(chǔ)器或被包括在存儲(chǔ)器中的第一電路系統(tǒng),其中所述配置配置第一電路系統(tǒng)以實(shí)現(xiàn)用于重新排序的存儲(chǔ)器訪問序列的第二存儲(chǔ)器訪問約束。
20.如實(shí)施例17所述的非暫態(tài)計(jì)算機(jī)可讀介質(zhì),其中操作還包括:
使用輸入程序的編譯時(shí)執(zhí)行來確定指定的存儲(chǔ)器訪問序列。
21.一種系統(tǒng),包括:
用于存儲(chǔ)指定的存儲(chǔ)器訪問序列的裝置,其中指定的序列對(duì)應(yīng)于要執(zhí)行的功能,其中指定的存儲(chǔ)器訪問序列具有第一存儲(chǔ)器訪問約束;以及
用于將指定的存儲(chǔ)器訪問序列重新排序,以創(chuàng)建重新排序的存儲(chǔ)器訪問序列的裝置,其中重新排序的存儲(chǔ)器訪問序列具有第二存儲(chǔ)器訪問約束,其中第二存儲(chǔ)器訪問約束與第一存儲(chǔ)器訪問約束不同;
其中重新排序的存儲(chǔ)器訪問序列可用于訪問存儲(chǔ)器以執(zhí)行功能。
22.如實(shí)施例21所述的系統(tǒng),還包括:
用于為多個(gè)重新排序的存儲(chǔ)器訪問序列確定性能估計(jì)的裝置,其中該多個(gè)重新排序的存儲(chǔ)器訪問序列基于指定的存儲(chǔ)器訪問序列并且可用于訪問存儲(chǔ)器以執(zhí)行功能;以及
用于基于性能估計(jì)來選擇該多個(gè)重新排序的序列中的一個(gè)重新排序的序列的裝置。
23.如實(shí)施例21所述的系統(tǒng),還包括:
用于根據(jù)第二存儲(chǔ)器訪問約束來配置被耦接到存儲(chǔ)器或被包括在存儲(chǔ)器中的第一電路系統(tǒng)的裝置,其中所述配置配置第一電路系統(tǒng)以實(shí)現(xiàn)用于重新排序的存儲(chǔ)器訪問序列的第二存儲(chǔ)器訪問約束。
24.如實(shí)施例21所述的系統(tǒng),還包括:
用于生成與重新排序的存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求序列的裝置;以及
用于由第一電路系統(tǒng)根據(jù)第二存儲(chǔ)器訪問約束來準(zhǔn)許存儲(chǔ)器訪問請(qǐng)求序列,由此避免存儲(chǔ)器訪問請(qǐng)求序列的存儲(chǔ)器冒險(xiǎn)的裝置。
25.如實(shí)施例21所述的系統(tǒng),還包括:
用于使用輸入程序的編譯時(shí)執(zhí)行來確定指定的存儲(chǔ)器訪問序列的裝置。
26.一種具有用于執(zhí)行操作的指令的計(jì)算機(jī)程序,所述操作包括:
存儲(chǔ)指定的存儲(chǔ)器訪問序列,其中指定的序列對(duì)應(yīng)于要執(zhí)行的功能,其中指定的存儲(chǔ)器訪問序列具有第一存儲(chǔ)器訪問約束;以及
將指定的存儲(chǔ)器訪問序列重新排序,以創(chuàng)建重新排序的存儲(chǔ)器訪問序列,其中重新排序的存儲(chǔ)器訪問序列具有第二存儲(chǔ)器訪問約束,其中第二存儲(chǔ)器訪問約束與第一存儲(chǔ)器訪問約束不同;
其中重新排序的存儲(chǔ)器訪問序列可用于訪問存儲(chǔ)器,以執(zhí)行功能。
27.如實(shí)施例26所述的計(jì)算機(jī)程序,其中操作還包括:
將指定的存儲(chǔ)器訪問序列重新排序,以創(chuàng)建一個(gè)或多個(gè)附加的、不同的重新排序的存儲(chǔ)器訪問序列;
為重新排序的存儲(chǔ)器訪問序列和該一個(gè)或多個(gè)附加的、不同的重新排序的存儲(chǔ)器訪問序列確定性能估計(jì),其中性能估計(jì)基于用于重新排序的序列和該一個(gè)或多個(gè)不同的、重新排序的序列的存儲(chǔ)器訪問約束;以及
基于性能估計(jì)來選擇重新排序的序列和該一個(gè)或多個(gè)附加的、不同的重新排序的序列中的一個(gè)序列。
28.如實(shí)施例26所述的計(jì)算機(jī)程序,其中操作還包括:
根據(jù)第二存儲(chǔ)器訪問約束來配置被耦接到存儲(chǔ)器或被包括在存儲(chǔ)器中的第一電路系統(tǒng),其中所述配置配置第一電路系統(tǒng)以實(shí)現(xiàn)用于重新排序的存儲(chǔ)器訪問序列的第二存儲(chǔ)器訪問約束;以及
使用輸入程序的編譯時(shí)執(zhí)行來確定指定的存儲(chǔ)器訪問序列。
以下編號(hào)的段落描述了關(guān)于自尋址存儲(chǔ)器的附加實(shí)施例:
1.一種裝置,包括:
存儲(chǔ)器;以及
尋址電路系統(tǒng),該尋址電路系統(tǒng)被耦接到存儲(chǔ)器或被包括在存儲(chǔ)器中,其中該尋址電路系統(tǒng)被配置為:
接收與指定的存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,其中存儲(chǔ)器訪問請(qǐng)求不包括地址信息;以及
向針對(duì)指定的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問請(qǐng)求指派地址。
2.如實(shí)施例1所述的裝置,其中尋址電路系統(tǒng)還被配置為:
存儲(chǔ)用于指定的存儲(chǔ)器訪問序列的地址,其中所存儲(chǔ)的地址在程序的編譯期間生成,其中經(jīng)編譯的程序的執(zhí)行生成存儲(chǔ)器訪問請(qǐng)求。
3.如實(shí)施例1所述的裝置,其中尋址電路系統(tǒng)是可編程的以向針對(duì)第二指定的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問請(qǐng)求指派地址。
4.如實(shí)施例1所述的裝置,其中尋址電路系統(tǒng)還被配置為:
維護(hù)用于對(duì)存儲(chǔ)器的讀訪問的讀計(jì)數(shù)器和用于對(duì)存儲(chǔ)器的寫訪問的寫計(jì)數(shù)器;以及
基于讀計(jì)數(shù)器和寫計(jì)數(shù)器來指派地址。
5.如實(shí)施例1所述的裝置,其中尋址電路系統(tǒng)被配置為具有用于與多個(gè)不同程序?qū)?yīng)的存儲(chǔ)器訪問請(qǐng)求序列的地址。
6.如實(shí)施例1所述的裝置,其中指定的存儲(chǔ)器訪問序列基于用于低密度奇偶校驗(yàn)(ldpc)解碼器的奇偶校驗(yàn)矩陣。
7.如實(shí)施例1所述的裝置,其中存儲(chǔ)器是多端口的,并且被配置為在給定周期中發(fā)起多個(gè)存儲(chǔ)器訪問。
8.如實(shí)施例1所述的裝置,還包括電路系統(tǒng),該電路系統(tǒng)被配置為基于存儲(chǔ)器訪問序列中即將到來的存儲(chǔ)器訪問地址來執(zhí)行高速緩存、預(yù)取或數(shù)據(jù)轉(zhuǎn)發(fā)中的一個(gè)或多個(gè)。
9.一種方法,包括:
由尋址電路系統(tǒng)接收與指定的存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,其中存儲(chǔ)器訪問請(qǐng)求不包括地址信息;
由尋址電路系統(tǒng)向針對(duì)指定的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問請(qǐng)求指派地址;以及
由存儲(chǔ)器使用指派的地址來執(zhí)行存儲(chǔ)器訪問序列。
10.如實(shí)施例9所述的方法,還包括:
存儲(chǔ)用于指定的存儲(chǔ)器訪問序列的地址,其中所存儲(chǔ)的地址在程序的編譯期間生成,其中經(jīng)編譯的程序的執(zhí)行生成存儲(chǔ)器訪問請(qǐng)求。
11.如實(shí)施例9所述的方法,還包括:
使用指定用于第二存儲(chǔ)器訪問序列的地址的信息來配置尋址電路系統(tǒng)。
12.如實(shí)施例9所述的方法,還包括:
由尋址電路系統(tǒng)維護(hù)用于對(duì)存儲(chǔ)器的讀訪問的讀計(jì)數(shù)器和用于對(duì)存儲(chǔ)器的寫訪問的寫計(jì)數(shù)器;
其中該指派基于讀計(jì)數(shù)器和寫計(jì)數(shù)器。
13.如實(shí)施例9所述的方法,還包括:
由尋址電路系統(tǒng)將地址指派給針對(duì)與不同程序?qū)?yīng)的多個(gè)指定的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問請(qǐng)求。
14.如實(shí)施例9所述的方法,其中指定的存儲(chǔ)器訪問序列基于用于低密度奇偶校驗(yàn)(ldpc)解碼器的奇偶校驗(yàn)矩陣。
15.一種方法,包括:
由計(jì)算系統(tǒng)為程序確定存儲(chǔ)器訪問序列;
由計(jì)算系統(tǒng)生成指定用于該存儲(chǔ)器訪問序列的地址的信息;以及
由計(jì)算系統(tǒng)使用該信息配置尋址電路系統(tǒng),其中該尋址電路系統(tǒng)被包括在存儲(chǔ)器中或耦接到存儲(chǔ)器,其中在所述配置之后,尋址電路系統(tǒng)可操作以將地址指派給與存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,其中存儲(chǔ)器訪問請(qǐng)求不包括地址信息。
16.如實(shí)施例15所述的方法,其中配置是使用一個(gè)或多個(gè)可編程硬件元件來執(zhí)行的。
17.如實(shí)施例15所述的方法,其中配置是通過將信息傳送到表來執(zhí)行的。
18.如實(shí)施例15所述的方法,其中確定是通過編譯包括存儲(chǔ)器訪問序列的輸入程序來執(zhí)行的。
19.如實(shí)施例18所述的方法,其中編譯包括執(zhí)行輸入程序的部分,以確定存儲(chǔ)器訪問序列。
20.如實(shí)施例15所述的方法,其中確定基于用于低密度奇偶校驗(yàn)(ldpc)解碼器的奇偶校驗(yàn)矩陣。
21.一種系統(tǒng),包括:
用于接收與指定的存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求的裝置,其中存儲(chǔ)器訪問請(qǐng)求不包括地址信息;以及
用于將地址指派給針對(duì)指定的存儲(chǔ)器訪問序列的存儲(chǔ)器訪問請(qǐng)求的裝置。
22.如實(shí)施例21所述的系統(tǒng),還包括:
用于存儲(chǔ)用于指定的存儲(chǔ)器訪問序列的地址的裝置,其中所存儲(chǔ)的地址在程序的編譯期間生成,其中經(jīng)編譯的程序的執(zhí)行生成存儲(chǔ)器訪問請(qǐng)求。
23.如實(shí)施例21所述的系統(tǒng),還包括:
用于維護(hù)用于對(duì)存儲(chǔ)器的讀訪問的讀計(jì)數(shù)器和用于對(duì)存儲(chǔ)器的寫訪問的寫計(jì)數(shù)器的裝置;以及
用于基于讀計(jì)數(shù)器和寫計(jì)數(shù)器來指派地址的裝置。
24.如實(shí)施例21所述的系統(tǒng),還包括:
用于基于存儲(chǔ)器訪問序列中即將到來的存儲(chǔ)器訪問地址來執(zhí)行高速緩存、預(yù)取或數(shù)據(jù)轉(zhuǎn)發(fā)中的一個(gè)或多個(gè)的裝置。
25.一種具有用于執(zhí)行操作的指令的計(jì)算機(jī)程序,所述操作包括:
為程序確定存儲(chǔ)器訪問序列;
生成指定用于存儲(chǔ)器訪問序列的地址的信息;以及
使用該信息來配置尋址電路系統(tǒng),其中尋址電路系統(tǒng)被包括在存儲(chǔ)器中或耦接到存儲(chǔ)器,其中在所述配置之后,尋址電路系統(tǒng)可操作以將地址指派給與存儲(chǔ)器訪問序列對(duì)應(yīng)的存儲(chǔ)器訪問請(qǐng)求,其中存儲(chǔ)器訪問請(qǐng)求不包括地址信息。
26.如實(shí)施例25所述的計(jì)算機(jī)程序,
其中配置是使用一個(gè)或多個(gè)可編程硬件元件來執(zhí)行的;
其中配置是通過將信息傳送到表來執(zhí)行的;
其中確定是通過編譯包括存儲(chǔ)器訪問序列的輸入程序來執(zhí)行的;或者
其中確定是基于用于低密度奇偶校驗(yàn)(ldpc)解碼器的奇偶校驗(yàn)矩陣的。
***
雖然已經(jīng)相當(dāng)詳細(xì)地描述了上面的實(shí)施例,但是一旦完全理解了上述公開內(nèi)容,則許多變化和修改將對(duì)本領(lǐng)域技術(shù)人員變得顯而易見。旨在將以下權(quán)利要求解釋為包括所有這樣的變化和修改。