專利名稱:用于執(zhí)行存儲(chǔ)器塊初始化及復(fù)制的存儲(chǔ)器控制器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明的實(shí)施例涉及一種存儲(chǔ)器控制器且涉及包括所述存儲(chǔ)器控制器的計(jì)算機(jī) 系統(tǒng)。更明確地說,本發(fā)明的實(shí)施例涉及一種經(jīng)配置以執(zhí)行存儲(chǔ)器塊初始化及復(fù)制功能的 存儲(chǔ)器控制器且涉及用于在總線業(yè)務(wù)減少的情況下執(zhí)行存儲(chǔ)器塊初始化及復(fù)制功能的方法。
背景技術(shù):
常規(guī)計(jì)算機(jī)系統(tǒng)通常包括用于存儲(chǔ)軟件應(yīng)用程序及程序數(shù)據(jù)的一個(gè)或一個(gè)以上 存儲(chǔ)器模塊及在微處理器的指導(dǎo)下控制對(duì)存儲(chǔ)器模塊的存取的存儲(chǔ)器控制器。常規(guī)存儲(chǔ) 器模塊通常基于預(yù)定義命令序列來加電且初始化以便適當(dāng)?shù)夭僮?例如,在“啟動(dòng)”操作期 間)。未能遵循用于加電及初始化的所需程序可能導(dǎo)致未定義操作。除了啟動(dòng)或加電初始化操作外,存儲(chǔ)器初始化也可在正常系統(tǒng)操作期間執(zhí)行以保 留存儲(chǔ)器或?qū)⒋鎯?chǔ)器分配給正由計(jì)算機(jī)系統(tǒng)執(zhí)行或經(jīng)調(diào)度以由計(jì)算機(jī)系統(tǒng)執(zhí)行的一個(gè)或 一個(gè)以上軟件程序或應(yīng)用程序(例如,實(shí)時(shí)串流視頻應(yīng)用程序)。這些類型的存儲(chǔ)器初始化 通常由處理器進(jìn)行微觀管理。舉例來說,初始化程序可通過處理器經(jīng)由循環(huán)來執(zhí)行,其中所 述循環(huán)的每一次反復(fù)產(chǎn)生被發(fā)送到存儲(chǔ)器控制器的指令存儲(chǔ)器控制器初始化一個(gè)或一個(gè) 以上指定存儲(chǔ)器地址的初始化命令。由處理器發(fā)送到存儲(chǔ)器控制器的初始化命令包括指令 存儲(chǔ)器控制器將指定存儲(chǔ)器塊設(shè)定為給定初始化值或邏輯電平(例如,較高邏輯電平或邏 輯“ 1 ”、較低邏輯電平或邏輯“0”等等)的存儲(chǔ)器寫入。舉例來說,參看圖1A,由常規(guī)計(jì)算機(jī)系統(tǒng)10中的處理器12執(zhí)行的常規(guī)存儲(chǔ)器初始 化循環(huán)可用編程邏輯來執(zhí)行,如下For(Address =
until[Address] = 10000){Data[Address] = Initialization_Value ;Address = Address+1 ;}因此,如上述編程邏輯中所示,為了初始化10,000個(gè)存儲(chǔ)器地址處的數(shù)據(jù),處理 器12執(zhí)行具有10,000次反復(fù)的for循環(huán),其中每一次反復(fù)產(chǎn)生經(jīng)由總線14發(fā)送到存儲(chǔ)器 控制器16用于初始化在存儲(chǔ)器裝置18中的一個(gè)特定存儲(chǔ)器位置或地址處的數(shù)據(jù)的指令 (例如,寫入命令)。每一所產(chǎn)生的指令或?qū)懭朊畎ㄒ粋€(gè)存儲(chǔ)器地址及一個(gè)初始化值。 因此,在上述實(shí)例中,處理器12將10,000個(gè)存儲(chǔ)器地址及10,000個(gè)初始化值發(fā)送到存儲(chǔ) 器控制器16,存儲(chǔ)器控制器16執(zhí)行初始化指令。此外,盡管上文提供的編程邏輯使參數(shù)地 址針對(duì)for循環(huán)的每一次反復(fù)而遞增1,但其它常規(guī)實(shí)施方案可使參數(shù)地址遞增不同于1的 值(例如,2的冪)。如上文相對(duì)于常規(guī)初始化編程邏輯的實(shí)例所示,用于軟件應(yīng)用程序的存儲(chǔ)器塊的 定制初始化可包括若干由處理器執(zhí)行的寫入命令,這可消耗寶貴的系統(tǒng)資源(例如,總線 帶寬、處理器功率等等)。此外,處理器12在發(fā)布用于目標(biāo)存儲(chǔ)器地址的存儲(chǔ)器命令(例如,讀取命令、寫入命令等等)之前必須等待直到初始化操作之后,這可進(jìn)一步延遲計(jì)算機(jī) 系統(tǒng)10。舉例來說,處理器12可監(jiān)控初始化操作以便在發(fā)布用于存儲(chǔ)器18中的經(jīng)初始化 存儲(chǔ)器地址的存儲(chǔ)器命令之前等待直到初始化操作完成為止。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例涉及一種經(jīng)配置以執(zhí)行存儲(chǔ)器塊初始化及復(fù)制功能的存儲(chǔ)器控 制器且涉及用于在總線業(yè)務(wù)減少的情況下執(zhí)行存儲(chǔ)器塊初始化及復(fù)制功能的方法。因此,本發(fā)明的實(shí)施例可包括一種存儲(chǔ)器控制器,其包含經(jīng)配置以接收存儲(chǔ)器的 開始地址的邏輯;經(jīng)配置以接收所述存儲(chǔ)器的結(jié)束地址或長度的邏輯;經(jīng)配置以接收填充 值的邏輯;及經(jīng)配置以將所述填充值寫入到所述存儲(chǔ)器中由開始地址及結(jié)束地址或長度界 定的任意長度的填充范圍中的邏輯。本發(fā)明的另一實(shí)施例可包括一種在存儲(chǔ)器控制器處執(zhí)行的用于初始化或復(fù)制存 儲(chǔ)器中的數(shù)據(jù)的方法,所述方法包含接收存儲(chǔ)器的開始地址;接收所述存儲(chǔ)器的結(jié)束地 址或長度;接收填充值;及將所述填充值寫入到所述存儲(chǔ)器中由開始地址及結(jié)束地址或長 度界定的任意長度的填充范圍中。本發(fā)明的另一實(shí)施例可包括一種計(jì)算機(jī)系統(tǒng),其包含處理器,其經(jīng)配置以發(fā)送包 括待初始化或復(fù)制的任意范圍的存儲(chǔ)器地址的存儲(chǔ)器初始化指令或存儲(chǔ)器復(fù)制指令中的 一者;及存儲(chǔ)器控制器,其耦合到所述處理器,其中所述存儲(chǔ)器控制器經(jīng)配置以從所述處理 器接收所述存儲(chǔ)器初始化指令或存儲(chǔ)器復(fù)制指令,且經(jīng)配置以根據(jù)接收到的指令來初始化 或復(fù)制所述范圍的存儲(chǔ)器地址。本發(fā)明的另一實(shí)施例可包括一種在存儲(chǔ)器控制器處執(zhí)行的用于存儲(chǔ)器初始化的 方法,所述方法包含接收包括開始地址、結(jié)束地址及初始化值的存儲(chǔ)器初始化命令;將當(dāng) 前地址設(shè)定為所述開始地址;將所述初始化值寫入到所述存儲(chǔ)器中的所述當(dāng)前地址處;使 所述當(dāng)前地址遞增;及如果所述當(dāng)前地址不大于所述結(jié)束地址,則重復(fù)所述寫入及遞增。本發(fā)明的另一實(shí)施例可包括一種在存儲(chǔ)器控制器處執(zhí)行的用于復(fù)制存儲(chǔ)器的方 法,所述方法包含接收包括源地址、目的地地址及復(fù)制計(jì)數(shù)的存儲(chǔ)器復(fù)制命令;將來自所 述源地址的數(shù)據(jù)復(fù)制到所述目的地地址;使所述源地址及所述目的地地址遞增;使當(dāng)前計(jì) 數(shù)遞增;及如果所述當(dāng)前計(jì)數(shù)不大于所述復(fù)制計(jì)數(shù),則重復(fù)所述復(fù)制及遞增。
附圖經(jīng)包括以提供對(duì)本發(fā)明的進(jìn)一步理解,且并入在本說明書中并構(gòu)成本說明書 的一部分。所述圖式說明本發(fā)明的實(shí)施例,且連同描述,用以解釋本發(fā)明的原理。圖IA為說明使用常規(guī)初始化處理的計(jì)算系統(tǒng)的框圖。圖IB為說明使用具有減少的總線業(yè)務(wù)及處理器利用的初始化處理的計(jì)算系統(tǒng)的 框圖。圖2A到圖2D為雙通道總線及在其上傳送的相關(guān)聯(lián)指令的說明。圖3為說明在計(jì)算系統(tǒng)的處理器處執(zhí)行的存儲(chǔ)器初始化/復(fù)制處理的流程圖。圖4A為說明在計(jì)算系統(tǒng)的存儲(chǔ)器控制器處執(zhí)行的存儲(chǔ)器初始化/復(fù)制處理的流 程圖。
圖4B為說明在存儲(chǔ)器初始化處理期間執(zhí)行的任選處理的流程圖。圖5為在計(jì)算系統(tǒng)的處理器處執(zhí)行的替代存儲(chǔ)器初始化/復(fù)制處理的說明。圖6A為說明在存儲(chǔ)器控制器處執(zhí)行的存儲(chǔ)器復(fù)制處理的流程圖。圖6B為說明在存儲(chǔ)器控制器處執(zhí)行的存儲(chǔ)器初始化的流程圖。圖7為說明包括初始化邏輯及相關(guān)元件的存儲(chǔ)器控制器的框圖。
具體實(shí)施例方式本發(fā)明的各方面在針對(duì)于本發(fā)明的特定實(shí)施例的以下描述及相關(guān)圖式中揭示。在 不脫離本發(fā)明的范圍的情況下可設(shè)計(jì)出替代實(shí)施例。另外,將不會(huì)詳細(xì)描述本發(fā)明的眾所 周知元件,或?qū)⑹÷运鲈?,以免混淆本發(fā)明的相關(guān)細(xì)節(jié)。詞“示范性”及/或“實(shí)例,,在本文中用于意指“充當(dāng)實(shí)例、例子或說明”。本文中 被描述為“示范性”及/或“實(shí)例”的任何實(shí)施例不必解釋為比其它實(shí)施例優(yōu)選或有利。同 樣,術(shù)語“本發(fā)明的實(shí)施例”并不要求本發(fā)明的所有實(shí)施例均包括所論述的特征、優(yōu)點(diǎn)或操 作模式。此外,依據(jù)將由(例如)計(jì)算裝置的元件執(zhí)行的動(dòng)作序列來描述許多實(shí)施例。將認(rèn) 識(shí)到,可通過特定電路(例如,專用集成電路(ASIC)),通過正由一個(gè)或一個(gè)以上處理器執(zhí) 行的程序指令,或通過兩者的組合來執(zhí)行本文描述的各種動(dòng)作。另外,可認(rèn)為本文中描述的 這些動(dòng)作序列完全體現(xiàn)于里面已存儲(chǔ)有一組對(duì)應(yīng)計(jì)算機(jī)指令的任何形式的計(jì)算機(jī)可讀存 儲(chǔ)媒體內(nèi),所述計(jì)算機(jī)指令在執(zhí)行時(shí)將致使相關(guān)聯(lián)處理器執(zhí)行本文中描述的功能性。因此, 本發(fā)明的各種方面可以若干不同形式來體現(xiàn),已預(yù)期所有所述形式均在所主張標(biāo)的物的范 圍內(nèi)。另外,對(duì)于本文中描述的實(shí)施例中的每一者來說,任何所述實(shí)施例的對(duì)應(yīng)形式均可在 本文中被描述為(例如)“經(jīng)配置以”執(zhí)行所描述的動(dòng)作的“邏輯”。將理解,盡管術(shù)語“第一”、“第二”等可在本文中用于描述各種元件,但這些元件不 應(yīng)受這些術(shù)語限制。這些術(shù)語僅用于區(qū)分一個(gè)元件與另一元件。舉例來說,在不脫離本發(fā) 明的實(shí)施例的范圍的情況下,第一元件可稱作第二元件,且類似地,第二元件可稱作第一元 件。而且,如本文中所使用,術(shù)語“及/或”包括所列出相關(guān)聯(lián)項(xiàng)中的一者或一者以上的任 何及所有組合。本文中所使用的術(shù)語僅用于描述特定實(shí)施例的目的且不希望限制本發(fā)明的實(shí)施 例。如本文中所使用,單數(shù)形式“一”及“所述”既定還包括復(fù)數(shù)形式,除非上下文另有清楚 指示。將進(jìn)一步理解,術(shù)語“包含”及/或“包括”在本文中使用時(shí)指定所陳述特征、整數(shù)、步 驟、操作、元件及/或組件的存在,但并不排除一個(gè)或一個(gè)以上其它特征、整數(shù)、步驟、操作、 元件、組件及/或其群組的存在或添加。為了更好地理解本發(fā)明的實(shí)施例,將描述實(shí)例計(jì)算系統(tǒng),之后將描述在實(shí)例計(jì)算 處理內(nèi)執(zhí)行的存儲(chǔ)器初始化處理的實(shí)例。圖IB為說明根據(jù)本發(fā)明的實(shí)施例的計(jì)算系統(tǒng)100 的框圖。在圖IB的實(shí)施例中,處理器102經(jīng)由總線104而耦合到存儲(chǔ)器控制器106。存儲(chǔ) 器控制器106耦合到存儲(chǔ)器108。在一實(shí)例中,處理器102可對(duì)應(yīng)于任何眾所周知的處理 器。舉例來說,處理器102可體現(xiàn)為圖形處理器單元(GPU)、中央處理單元(CPU)、數(shù)字信號(hào) 處理器(DSP)、硬件加速器等。此外,處理器102可表示可控制總線104及/或存儲(chǔ)器控制器106的多個(gè)處理器或主控器及其它相關(guān)元件(例如,互連/總線仲裁器)。處理器102與存儲(chǔ)器控制器106之間及同樣存儲(chǔ)器控制器106與存儲(chǔ)器108之間的總線連接104可為直接 連接或間接連接。舉例來說,處理器102與存儲(chǔ)器控制器106可經(jīng)由總線104而連接,總線 104可為多點(diǎn)總線、單點(diǎn)總線、雙通道總線及/或?qū)S眠B接。在圖IB的實(shí)施例中,計(jì)算系統(tǒng) 100可表示任何類型的計(jì)算系統(tǒng),例如服務(wù)器、個(gè)人計(jì)算機(jī)、膝上型計(jì)算機(jī)、電池供電的袖珍 型手持式PC、個(gè)人數(shù)字助理(PDA)或其它移動(dòng)計(jì)算裝置(例如,移動(dòng)電話)。此外,存儲(chǔ)器108可表示任何眾所周知類型的存儲(chǔ)器。舉例來說,存儲(chǔ)器108可 包括以下各者中的一者或一者以上單列直插式存儲(chǔ)器模塊(SIMM)、雙列直插式存儲(chǔ)器模 塊(DIMM)、快閃存儲(chǔ)器(例如,NAND快閃存儲(chǔ)器、NOR快閃存儲(chǔ)器等等)、隨機(jī)存取存儲(chǔ)器 (RAM)(例如同步RAM (SRAM)、磁性RAM (MRAM)、動(dòng)態(tài)RAM (DRAM))及電可擦除可編程只讀存儲(chǔ) 器(EEI3ROM)。在復(fù)雜的現(xiàn)代數(shù)字系統(tǒng)設(shè)計(jì)的中心處是在總線(例如,104/204)上路由傳送請(qǐng)求 的互連。將了解,所述互連是將事務(wù)請(qǐng)求及寫入數(shù)據(jù)從主控器路由到受控器及將讀取數(shù)據(jù) 及寫入響應(yīng)從受控器路由到主控器(例如,從(主控器)發(fā)送裝置202到(受控器)接收 裝置206/從(受控器)接收裝置206到(主控器)發(fā)送裝置202)的邏輯。舉例來說,互 連(其可為102/202的部分)可用于具有多個(gè)主控器(例如,多個(gè)處理器)及/或多個(gè)存 儲(chǔ)器控制器的系統(tǒng)中。舉例來說,總線104在駐存于系統(tǒng)100中的各種處理功能當(dāng)中移動(dòng) 信息??偩€結(jié)構(gòu)可包括獨(dú)立且單獨(dú)的地址、讀取及寫入總線。這些連接允許將傳送地址從 發(fā)送裝置傳送到接收裝置、將讀取數(shù)據(jù)從接收裝置傳送到發(fā)送裝置及將寫入數(shù)據(jù)從發(fā)送裝 置傳送到接收裝置。如圖2A中所說明,總線204可駐存于發(fā)送裝置202與接收裝置206之間。在所說 明的通用系統(tǒng)200中,需要能夠在裝置(例如,202、206)之間移動(dòng)數(shù)據(jù)。本發(fā)明的實(shí)施例描 述用于執(zhí)行芯片上系統(tǒng)設(shè)計(jì)及其它系統(tǒng)架構(gòu)的存儲(chǔ)器塊初始化的緊密總線命令。如本文中 所使用及說明,發(fā)射通道208為用于在發(fā)送裝置202與接收裝置206之間發(fā)射“信息”的一 般媒體。舉例來說,以時(shí)分多路復(fù)用型式,可將不同類型的信息從發(fā)送裝置202廣播到接收 裝置206。本發(fā)明的一些實(shí)施例可使用所說明的雙通道總線204來促進(jìn)存儲(chǔ)器初始化及復(fù) 制命令。雙通道總線配置的額外細(xì)節(jié)可從2004年4月27日申請(qǐng)的題為“多地址雙通道總 線結(jié)構(gòu)(A Multiple Address Two Channel Bus Structure) ” 的第 10/833,716 號(hào)美國專 利申請(qǐng)案中獲得,所述申請(qǐng)案轉(zhuǎn)讓給本受讓人且以全文引用的方式并入本文中。舉例來說,通過使用所說明的雙通道總線結(jié)構(gòu)204,發(fā)送裝置202可通過在地址占 用期間在發(fā)射通道208上廣播地址來起始讀取或?qū)懭雮魉突蛘咂淙魏谓M合。在讀取傳送請(qǐng) 求的情況下,這是需要在發(fā)射通道208上廣播的唯一信息。接收裝置206確認(rèn)此廣播且隨后 通過在讀取數(shù)據(jù)通道210上廣播讀取數(shù)據(jù)來提供所請(qǐng)求數(shù)據(jù)。在寫入傳送請(qǐng)求的情況下, 主控器(例如,發(fā)送裝置202)隨后可通過在寫入占用中經(jīng)由發(fā)射通道208將寫入數(shù)據(jù)廣播 到接收裝置206來跟隨地址在發(fā)射通道上的廣播。在存儲(chǔ)器初始化命令的情況下,在地址 占用期間將用于存儲(chǔ)器初始化的“開始”地址及“結(jié)束”(例如,結(jié)束地址或長度)兩者同時(shí) 廣播到接收裝置206 (例如,存儲(chǔ)器控制器)。此外,隨后可在數(shù)據(jù)占用中發(fā)射初始化值作為 根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)器初始化總線命令的任選部分。發(fā)射通道可包括作為在發(fā)射通道208上發(fā)射的位的部分的用于指示正被廣播的數(shù)據(jù)的類型(例如,寫入地址、讀取地址、數(shù)據(jù))的控制/信令位?;蛘?,可提供次級(jí)信令/ 控制連接/總線(未圖示),使得發(fā)射通道的整個(gè)寬度(例如,64個(gè)位)可用于發(fā)送地址/ 數(shù)據(jù)信息。同樣,可針對(duì)控制/信令信息提供從接收裝置到發(fā)送裝置的次級(jí)信令/控制連接 /總線(未圖示)。關(guān)于雙通道總線結(jié)構(gòu)204中的次級(jí)連接的細(xì)節(jié)可在上述第10/833,716 號(hào)美國專利申請(qǐng)案中找到,所以將不在本文中進(jìn)一步論述額外細(xì)節(jié)。發(fā)送裝置202可具有對(duì)發(fā)射通道208的控制且可在作用中寫入數(shù)據(jù)占用之前、期間或之后廣播一個(gè)或一個(gè)以上傳送地址。而且,發(fā)射通道208及讀取數(shù)據(jù)通道210可為獨(dú) 立的。因此,由發(fā)送裝置202廣播地址及寫入數(shù)據(jù)可與由接收裝置206將讀取數(shù)據(jù)廣播回 到發(fā)送裝置202同時(shí)發(fā)生,這產(chǎn)生非常緊密及有效的總線結(jié)構(gòu)204。雙通道總線204的另一方面是促進(jìn)在單一廣播循環(huán)中將多個(gè)數(shù)據(jù)傳送請(qǐng)求從發(fā) 送裝置202管線傳輸?shù)浇邮昭b置206的能力。一次廣播多個(gè)地址增加了總線204的性能。 舉例來說,通過在單一廣播循環(huán)中呈現(xiàn)具有用于所要存儲(chǔ)器初始化操作的“開始”及“結(jié)束” 地址的單一總線請(qǐng)求,可以非常有效的型式來呈現(xiàn)命令。在本發(fā)明的一個(gè)實(shí)施例中,發(fā)射通道208及讀取數(shù)據(jù)通道210各自為64位寬。呈 現(xiàn)給接收裝置206的傳送地址為32位寬。這允許發(fā)送裝置202在單一廣播循環(huán)期間在發(fā) 射通道208上提供兩個(gè)傳送地址,例如地址A及地址B。在此情況下,廣播循環(huán)可界定為一 個(gè)時(shí)鐘循環(huán)。舉例來說,如圖2B中所說明,發(fā)送裝置202可在地址占用220期間廣播在地址Al 上的數(shù)據(jù)初始化開始存儲(chǔ)器地址及在地址Bl上的結(jié)束存儲(chǔ)器地址?;ミB及存儲(chǔ)器控制器 (接收裝置206)可基于此隱含定位(例如,第一 32個(gè)位作為地址Al,且第二 32個(gè)位作為 地址Bi)來處理此請(qǐng)求類型。發(fā)送裝置202可經(jīng)由唯一傳送請(qǐng)求屬性(例如,MI[1])來指 示這是存儲(chǔ)器初始化事務(wù)請(qǐng)求。存儲(chǔ)器初始化請(qǐng)求屬性(例如,MI[1])可致使互連將此存 儲(chǔ)器初始化事務(wù)轉(zhuǎn)發(fā)到控制開始地址的存儲(chǔ)器控制器。在此配置中,可將存儲(chǔ)器初始化為 預(yù)定值。在如圖2C中所說明的另一實(shí)施例中,可經(jīng)由不同傳送屬性值(例如,MI[2])來識(shí) 別總線命令。此總線命令可包括地址占用命令230,其與由MI [1]產(chǎn)生的地址占用命令相 同,然而,所述總線命令還在發(fā)射通道上產(chǎn)生后繼數(shù)據(jù)占用232,其含有將在從開始地址Al 到結(jié)束地址Bl的存儲(chǔ)器初始化處理期間使用的“初始化值”D1。一旦數(shù)據(jù)初始化命令被路 由到存儲(chǔ)器控制器,存儲(chǔ)器控制器便可執(zhí)行所請(qǐng)求的初始化操作。在如圖2D中所說明的又一實(shí)施例中,可經(jīng)由不同傳送屬性值(例如,MC[1])來識(shí) 別另一總線命令。此總線命令可包括多個(gè)地址占用命令240及242,其與由MI [1]產(chǎn)生的地 址占用命令類似。舉例來說,此總線命令可在復(fù)制從開始地址Al到結(jié)束地址Bl的存儲(chǔ)器 值且將所述值寫入到開始地址A2到結(jié)束地址B2的存儲(chǔ)器復(fù)制處理期間使用。一旦第二組 地址被路由到存儲(chǔ)器控制器,存儲(chǔ)器控制器便可執(zhí)行所請(qǐng)求的存儲(chǔ)器復(fù)制操作。如上文所說明,雙通道總線結(jié)構(gòu)的此特殊總線命令提供實(shí)施存儲(chǔ)器初始化功能的 有效方式。舉例來說,效率包括(但不限于)用以產(chǎn)生存儲(chǔ)器初始化的單一總線命令/事 務(wù);存儲(chǔ)器控制器基于“開始”地址使所述命令轉(zhuǎn)向到的互連指定;以及具有及不具有“初 始化”值的可選格式。而且,如上所提,特殊總線命令可界定有效存儲(chǔ)器復(fù)制功能。此外,可 用待初始化或復(fù)制的長度(例如,存儲(chǔ)器的字節(jié))來替代結(jié)束地址。
本發(fā)明的實(shí)施例將存儲(chǔ)器初始化的功能性置于存儲(chǔ)器控制器中,這節(jié)省時(shí)間及能量兩者。節(jié)省時(shí)間是因?yàn)樘幚砥骺衫^續(xù)進(jìn)行處理而非在地址上進(jìn)行循環(huán)(例如,比較在圖 IA中執(zhí)行的N次處理與圖IB中執(zhí)行的1次處理)??晒?jié)省能量是因?yàn)橐韵略蛱幚砥?102執(zhí)行較少代碼;不將個(gè)別存儲(chǔ)器寫入從處理器102發(fā)送到存儲(chǔ)器控制器106 ;及存儲(chǔ)器 控制器106可改進(jìn)到存儲(chǔ)器108的寫入及減少在存儲(chǔ)器數(shù)據(jù)線上的值觸發(fā)器的數(shù)目。舉例 來說,存儲(chǔ)器控制器106可一次初始化一存儲(chǔ)器頁,從而在整個(gè)頁的寫入期間使數(shù)據(jù)線保 持恒定。一般來說,如將在下文中相對(duì)于圖3及圖4A到4B來更詳細(xì)地描述,處理器102可 將初始化指令發(fā)布到存儲(chǔ)器控制器106,所述初始化指令指令存儲(chǔ)器控制器106初始化多 個(gè)存儲(chǔ)器地址(例如,位于指定存儲(chǔ)器地址范圍內(nèi)的存儲(chǔ)器地址)。圖3、圖4A及圖4B共同說明在圖IB的計(jì)算系統(tǒng)100內(nèi)執(zhí)行的實(shí)例存儲(chǔ)器初始化 處理。在下文的描述中,圖3的處理是在圖IB的處理器102處執(zhí)行,且圖4A及圖4B的處 理是在圖IB的存儲(chǔ)器控制器106處執(zhí)行。然而,應(yīng)理解,圖3、圖4A及圖4B的實(shí)例處理可 替代地在任何類型的計(jì)算或存儲(chǔ)器系統(tǒng)內(nèi)執(zhí)行。在圖3的實(shí)施例中,在300中,處理器102確定是否要初始化存儲(chǔ)器108的一個(gè)或 一個(gè)以上存儲(chǔ)器地址處的數(shù)據(jù)。舉例來說,框300的確定可基于與正由處理器102執(zhí)行或 經(jīng)調(diào)度以由圖IB的處理器102執(zhí)行的軟件程序相關(guān)聯(lián)的存儲(chǔ)器要求。因此,在一實(shí)例中, 如果軟件程序或應(yīng)用程序路由將使用多達(dá)10,000個(gè)字節(jié)的數(shù)據(jù),則處理器102可確定初始 化存儲(chǔ)器108的對(duì)應(yīng)于10,000個(gè)字節(jié)的數(shù)據(jù)的若干存儲(chǔ)器地址處的數(shù)據(jù)。在305中,處理器102基于來自300的針對(duì)初始化確定的存儲(chǔ)器地址數(shù)目來產(chǎn)生 初始化指令。所述初始化指令可包括待初始化的一定范圍的存儲(chǔ)器地址(例如,如相對(duì)于 圖2B論述的開始及結(jié)束地址)且任選地包括初始化值(例如,見圖2C)。在另一替代方案 中,所述初始化值無需包括于所述初始化指令內(nèi),而是可為隱含的或由存儲(chǔ)器控制器106 假定。舉例來說,可假定所述初始化值設(shè)定為“0”或某其它常數(shù),除非所述初始化值包括于 初始化指令內(nèi)被設(shè)定為不同于“0”的電平。在另一實(shí)例中,初始化值可對(duì)應(yīng)于信息。舉例 來說,如果正針對(duì)串流視頻應(yīng)用對(duì)大體上藍(lán)色幀進(jìn)行解碼,則可將與待顯示的下一幀相關(guān) 聯(lián)的存儲(chǔ)器地址初始化為表示固體“藍(lán)”幀的值,使得在視頻解碼期間僅需要更新所述下一 幀的最后非藍(lán)色部分。在一實(shí)例中,假定在300中確定將初始化10,000個(gè)存儲(chǔ)器地址,且初始化值為 “0”。在這些假定下,在一實(shí)例中,初始化指令可用編程邏輯表示如下Initialization Instructions{Initialize from Address
to Address[9999]with data(" 0〃);}初始化指令實(shí)例1如上述實(shí)例編程邏輯中所示,初始化指令可相對(duì)較簡單以及相對(duì)較短。如將了解, 依據(jù)上述假定,上述實(shí)例編程邏輯指令存儲(chǔ)器控制器106用邏輯“0”初始化存儲(chǔ)器地址
到[9999]。然而,應(yīng)理解,編程邏輯的其它實(shí)例無需為了初始化10,000個(gè)存儲(chǔ)器地 址而初始化上文給定的特定地址,而是可指定存儲(chǔ)器108內(nèi)可用的任何存儲(chǔ)器地址范圍。 在一實(shí)例中,僅需要將兩個(gè)地址(例如,
及[9999])從處理器102發(fā)送到存儲(chǔ)器控制器106以支持初始化操作。在另一實(shí)例中,單一地址(例如,
)及偏移值或長度(例如,10000)可替代兩個(gè)單獨(dú)存儲(chǔ)器地址而從處理器102發(fā)送到存儲(chǔ)器控制器106以支持初 始化操作。在又一實(shí)例中,初始化指令可指令存儲(chǔ)器控制器106用從其它存儲(chǔ)器地址復(fù)制的 數(shù)據(jù)來初始化第一組存儲(chǔ)器地址(例如,見圖2D)。因此,此情況中的給定初始化值并非為 一個(gè)常數(shù)值,而是可對(duì)應(yīng)于待復(fù)制的對(duì)應(yīng)存儲(chǔ)器地址處的數(shù)據(jù)的值。在此實(shí)例中,初始化指 令可用編程邏輯表示如下Initialization Instructions{Initialize from Address
to Address[9999]with data at Address[10000]to[19999];}初始化指令實(shí)例2如上述實(shí)例2編程邏輯中所示,指令存儲(chǔ)器控制器106用存儲(chǔ)器地址[10000]到 [19999]處的數(shù)據(jù)來初始化存儲(chǔ)器地址W000]到[9999]。再次,此實(shí)例中的兩個(gè)相應(yīng)存儲(chǔ) 器地址范圍中的每一者可表示為一組兩個(gè)存儲(chǔ)器地址,或替代地,單一存儲(chǔ)器地址及偏移 值或長度。從存儲(chǔ)器控制器106的觀點(diǎn)來說,初始化指令實(shí)例2稍微較復(fù)雜,因?yàn)榇鎯?chǔ)器控 制器106讀取待復(fù)制的存儲(chǔ)器地址處的數(shù)據(jù)以及將所述讀取數(shù)據(jù)寫入到對(duì)應(yīng)目標(biāo)存儲(chǔ)器 地址。返回到圖3的實(shí)施例,在310中,處理器102將初始化指令發(fā)送到存儲(chǔ)器控制器 106 (例如,經(jīng)由總線104,例如多點(diǎn)總線連接、單點(diǎn)總線連接、專用連接等等)。在一個(gè)實(shí)施 例中,可經(jīng)由例如將存儲(chǔ)器控制器106與處理器102連接的配置總線(例如,并非用于存儲(chǔ) 器寫入/讀取指令的總線)等替代總線來發(fā)送存儲(chǔ)器初始化命令(例如,MI [1])。圖4A為說明根據(jù)本發(fā)明的一實(shí)施例的方法400的流程圖。所述方法可在框402 中通過接收存儲(chǔ)器的開始地址來開始。在框404中接收存儲(chǔ)器的結(jié)束地址或長度。如果在 決策框406中確定指令不是存儲(chǔ)器復(fù)制,則在框408中接收填充值或初始化值。在框410 中,將所述填充值寫入到存儲(chǔ)器中由開始地址及結(jié)束地址或長度界定的任意長度的填充范 圍中(例如,見圖2C)。因此,所述填充值(或默認(rèn)初始化值)可用于初始化存儲(chǔ)器而對(duì)將 處理器102耦合到存儲(chǔ)器控制器106的寫入總線104上的帶寬消耗很少,因?yàn)樗鎏幚硎?在存儲(chǔ)器控制器106處本地執(zhí)行。任選地,如果接收到的命令是用于存儲(chǔ)器復(fù)制的,則可使用所說明的方法400來 檢測存儲(chǔ)器復(fù)制。在決策框406中,檢測存儲(chǔ)器復(fù)制指令。如果所述指令是用于存儲(chǔ)器復(fù) 制的,則所述方法可進(jìn)一步包括在框412中接收存儲(chǔ)器的待復(fù)制的第一讀取地址。在框414 中,讀取所述存儲(chǔ)器的在所述第一讀取地址處開始的對(duì)應(yīng)于所述填充范圍的讀取范圍。舉 例來說,可通過所述第一讀取地址及結(jié)束讀取地址(例如,見圖2D)、所述第一讀取地址及 長度等來確立所述讀取范圍。在框416中,可在將填充值寫入到存儲(chǔ)器之前基于從讀取范 圍讀取的值來更新填充(或初始化)值。如所說明,如果在框418中到達(dá)結(jié)束地址,則所述方法結(jié)束。如果否,則在框420 中,可分別將開始及第一地址更新為待讀取及寫入的下一地址?;蛘?,可更新指向當(dāng)前讀取 及寫入地址的指針,且可維持原始開始及第一讀取地址。所述處理接著可繼續(xù)進(jìn)行,直到在指定范圍內(nèi)對(duì)存儲(chǔ)器進(jìn)行復(fù)制或初始化為止。圖4B為說明根據(jù)本發(fā)明的一實(shí)施例的在存儲(chǔ)器控制器106處執(zhí)行的存儲(chǔ)器初始 化處理的另一實(shí)施例的流程圖。在圖4B的實(shí)施例中,在框400中,存儲(chǔ)器控制器106執(zhí)行初 始化指令(例如,初始化指令實(shí)例1、初始化指令實(shí)例2等等,如圖4A中所說明)。在框450 中,在正執(zhí)行框400的初始化處理的同時(shí),存儲(chǔ)器控制器106可確定是否已從處理器102接 收到任何后繼讀取命令。如果存儲(chǔ)器控制器106確定已從處理器102接收到一個(gè)或一個(gè)以 上讀取命令,則所述處理前進(jìn)到框452 ;否則,所述處理前進(jìn)到框454。在框452中,存儲(chǔ)器 控制器106用作為用于由讀取命令指定的在填充/初始化存儲(chǔ)器范圍中的每一存儲(chǔ)器地址 的讀取響應(yīng)數(shù)據(jù)的填充/初始化值來響應(yīng)于所述一個(gè)或一個(gè)以上接收到的讀取命令。在一 實(shí)例中,存儲(chǔ)器控制器106無需從指定存儲(chǔ)器地址讀取初始化值,而是可僅僅用填充/初始 化值來自動(dòng)地進(jìn)行響應(yīng)。因此,實(shí)際上無需為了提供讀取響應(yīng)數(shù)據(jù)而執(zhí)行讀取操作,進(jìn)而增 加計(jì)算系統(tǒng)100的效率。
在替代實(shí)例中,盡管圖4B中未明確地展示,但如果讀取命令請(qǐng)求對(duì)尚未初始化 (例如,基于指示初始化處理的當(dāng)前存儲(chǔ)器地址位置的指針)的存儲(chǔ)器地址進(jìn)行數(shù)據(jù)讀取 操作,則框400的初始化處理可響應(yīng)于一個(gè)或一個(gè)以上讀取命令的接收而中斷。換句話說, 此實(shí)例中的數(shù)據(jù)讀取操作實(shí)際上如在常規(guī)技術(shù)中般執(zhí)行,且400的初始化處理在讀取操作 完成之后恢復(fù)。在另一替代實(shí)例中,如果用類似于初始化指令實(shí)例2(例如,將給定存儲(chǔ)器裝置處 的存儲(chǔ)器從一個(gè)部分復(fù)制到另一部分的存儲(chǔ)器復(fù)制型操作)的編程邏輯來執(zhí)行框400的初 始化,則框452可能不返回初始化值,而是可直接前進(jìn)到框454。舉例來說,在存儲(chǔ)器復(fù)制型 操作中,初始化值在存儲(chǔ)器控制器106處不必為已知的,而是可能需要對(duì)一個(gè)或一個(gè)以上 存儲(chǔ)器地址進(jìn)行讀取操作以便確定。因此,基于系統(tǒng)設(shè)計(jì)偏好,框400的初始化無需為了在 此情形下用讀取數(shù)據(jù)來進(jìn)行響應(yīng)而中斷。舉例來說,用于存儲(chǔ)器復(fù)制操作的目標(biāo)或目的地 部分中的存儲(chǔ)器地址的讀取命令可被忽略直到其可得到服務(wù)為止,或替代地可被添加到讀 取命令隊(duì)列,所述讀取命令隊(duì)列是在初始化400完成之后或在與所述讀取命令相關(guān)聯(lián)的存 儲(chǔ)器地址已被初始化或復(fù)制(例如,基于指示初始化處理的當(dāng)前存儲(chǔ)器地址位置的指針) 之后執(zhí)行。在框454中,在正執(zhí)行框400的初始化處理的同時(shí),存儲(chǔ)器控制器確定是否已從處 理器102接收到任何后繼寫入命令。如果存儲(chǔ)器控制器106確定已從處理器102接收到一 個(gè)或一個(gè)以上寫入命令,則所述處理前進(jìn)到框456 ;否則,所述處理前進(jìn)到框458。在框456 中,存儲(chǔ)器控制器106將所述一個(gè)或一個(gè)以上寫入命令添加到寫入緩沖器/隊(duì)列。在一實(shí)例 中,所述寫入隊(duì)列可本地存儲(chǔ)于存儲(chǔ)器控制器106處。在另一實(shí)例中,所述寫入命令隊(duì)列可 經(jīng)配置以存儲(chǔ)多達(dá)閾值數(shù)目的寫入命令。在此實(shí)例中,除了所述閾值數(shù)目外接收到的任何 寫入命令(例如,在寫入隊(duì)列滿之后接收到的寫入命令)可被忽略直到其可得到服務(wù)(即, 不存儲(chǔ)于存儲(chǔ)器控制器106處)為止及/或可能不被確認(rèn)(這將會(huì)允許存儲(chǔ)器控制器將背 壓施加到總線/處理器)。在框458中,存儲(chǔ)器控制器106確定框400的初始化操作是否完成(例如,含有來 自初始化指令的指定存儲(chǔ)器地址的所有或一部分是否已被初始化)。如果存儲(chǔ)器控制器確 定框400的初始化操作完成,則圖4B的處理前進(jìn)到框460 ;否則,處理返回到框400且繼續(xù)初始化操作。本發(fā)明的另一實(shí)施例在圖5中說明,其具有用于存儲(chǔ)器復(fù)制及存儲(chǔ)器初始化的單 獨(dú)應(yīng)用程序例程510。在此配置中,在處理器102上運(yùn)行的應(yīng)用程序例程510可調(diào)用用于存 儲(chǔ)器復(fù)制(mem_COpy請(qǐng)求)520及存儲(chǔ)器初始化(mem_init請(qǐng)求)530的特定服務(wù)。在請(qǐng)求 mem_copy 520后,在框522中,產(chǎn)生含有源地址及目的地地址以及復(fù)制計(jì)數(shù)的指令,且接著 在框524中,將mem_COpy指令發(fā)送到存儲(chǔ)器控制器106。在請(qǐng)求mem_init530后,在框532 中,產(chǎn)生含有開始地址及結(jié)束地址以及任選地含有初始化值的指令,且接著在框534中,將 mem_copy指令發(fā)送到存儲(chǔ)器控制器106。圖6A說明用于在接收到存儲(chǔ)器復(fù)制指令(例如,圖5中的520)之后在存儲(chǔ)器控制器處執(zhí)行存儲(chǔ)器復(fù)制的流程圖。舉例來說,可使用相對(duì)于圖2D描述的技術(shù)來將mem_COpy指 令及信息傳送到存儲(chǔ)器控制器,除了將在數(shù)據(jù)占用中提供復(fù)制計(jì)數(shù)而非第二組地址外。在 框621中,接收含有源地址及目的地地址以及復(fù)制計(jì)數(shù)的復(fù)制命令。在框622中,將計(jì)數(shù)器 設(shè)定為1,其確定復(fù)制計(jì)數(shù)。在框623中,將來自源地址的數(shù)據(jù)復(fù)制到目的地地址。在框624 中,使復(fù)制計(jì)數(shù)器遞增。在框625中,使源地址及目的地地址分別遞增到將從其復(fù)制及寫入 到其的下一地址。在決策框626中,將復(fù)制計(jì)數(shù)器與接收到的復(fù)制計(jì)數(shù)值進(jìn)行比較。如果當(dāng) 前計(jì)數(shù)器小于或等于復(fù)制計(jì)數(shù),則處理循環(huán)到框623且繼續(xù)進(jìn)行,直到復(fù)制處理完成為止。圖6B說明用于在接收到存儲(chǔ)器初始化指令(例如,圖5中的530)之后在存儲(chǔ)器 控制器處執(zhí)行存儲(chǔ)器初始化的流程圖。舉例來說,可使用相對(duì)于圖2C描述的技術(shù)來將mem_ init指令及信息傳送到存儲(chǔ)器控制器106。在框631中,接收含有開始地址及結(jié)束地址以 及任選地含有初始化值的初始化命令。在框632中,將當(dāng)前地址設(shè)定為開始地址。在框633 中,將存儲(chǔ)于當(dāng)前地址處的值設(shè)定為初始化值或任選地設(shè)定為默認(rèn)值。在框634中,使當(dāng)前 地址遞增。在決策框635中,將當(dāng)前地址與結(jié)束地址進(jìn)行比較。如果當(dāng)前地址不大于結(jié)束 地址,則處理循環(huán)到框633且繼續(xù)進(jìn)行,直到初始化完成為止。將了解,本發(fā)明的實(shí)施例不限于前文中提供的實(shí)例。舉例來說,mem_COpy指令可 包括源開始及結(jié)束地址以及目的地開始及結(jié)束地址,而非如上所述的復(fù)制計(jì)數(shù)。同樣,mem_ init指令可含有開始地址及長度,而非開始地址及結(jié)束地址。然而,不管用于傳送所述指 令的特定格式如何,每一實(shí)施例通過減少經(jīng)傳送到存儲(chǔ)器控制器的用于給定功能(例如, memjnit或mem_COpy)的處理器起始的事務(wù)的數(shù)目而大體上減少所使用的總線帶寬及處 理器功率。圖7為根據(jù)本發(fā)明的實(shí)施例的存儲(chǔ)器控制器106的較詳細(xì)說明。存儲(chǔ)器控制器 106可包括初始化邏輯140、填充寄存器142以及例如傳送隊(duì)列150及寫入緩沖器152等常 規(guī)元件。初始化可經(jīng)配置以從主控器(例如,CPU、DSP等等)接收初始化指令及填充如在 初始化指令(例如,見上述的指令實(shí)例1及圖2B到圖2C)中指定的存儲(chǔ)器范圍。舉例來說,在一個(gè)實(shí)施例中,初始化邏輯140可包括經(jīng)配置以接收存儲(chǔ)器的開 始地址的邏輯;經(jīng)配置以接收存儲(chǔ)器的結(jié)束地址或長度的邏輯;經(jīng)配置以接收填充值的邏 輯;及經(jīng)配置以將所述填充值寫入到存儲(chǔ)器中由開始地址及結(jié)束地址或長度界定的任意長 度的填充范圍中的邏輯。初始化邏輯140可經(jīng)配置以使用存儲(chǔ)器控制器106的還與其它主 控器(例如,DSP、CPU等等)共享的傳送隊(duì)列150??赏ㄟ^初始化邏輯140使用用于存儲(chǔ)器 控制器106的所確立協(xié)議來將填充數(shù)據(jù)置于傳送隊(duì)列150上。因此,初始化邏輯140可較易于集成到現(xiàn)有存儲(chǔ)器控制器設(shè)計(jì)中且與系統(tǒng)中的其它主控器協(xié)同地工作。
舉例來說,如圖7中所說明,傳送隊(duì)列150可具有從初始化邏輯140寫入的順序填 充操作。因此,本發(fā)明的一方面可包括經(jīng)配置以格式化用以將填充值寫入到填充范圍的寫 入命令以遵照傳送隊(duì)列的邏輯。舉例來說,每一填充可依從用于特定操作的標(biāo)準(zhǔn)大小及代 碼。舉例來說,頂部“填充”可為在如初始化指令中指定的開始地址(例如,00000)處開始 的32字節(jié)寫入命令。下一 “填充”可為用于下一地址塊的寫入命令(例如,在地址00032 處開始的32字節(jié)寫入命令)。如本文中所論述,以字節(jié)為單位的寫入大小及所述兩個(gè)順序 寫入命令僅為實(shí)例,且本發(fā)明的實(shí)施例不限于這些特定值或序列。傳送隊(duì)列150中接下來 的兩個(gè)條目是來自其它主控器(例如,DSP及CPU),所述兩個(gè)條目與填充指令交錯(cuò)。如可了 解,多個(gè)處理器/主控器可存取存儲(chǔ)器控制器106,且初始化邏輯140可經(jīng)配置以與其它主 控器協(xié)同地操作?;蛘?,初始化邏輯140可經(jīng)配置以阻斷其它主控器且順序地執(zhí)行初始化, 直到用填充值來初始化了整個(gè)存儲(chǔ)器范圍為止。 另外,由于填充數(shù)據(jù)/值將為相同的,所以填充寄存器142可包括于存儲(chǔ)器控制器 106中以在將填充值置于傳送隊(duì)列150中以供寫入到存儲(chǔ)器108之前對(duì)填充值進(jìn)行排隊(duì)。 具有單獨(dú)填充寄存器142的一個(gè)優(yōu)點(diǎn)是其防止將冗余數(shù)據(jù)寫入到寫入緩沖器152,這將限 制寫入緩沖器152中可用于其它主控器(例如,DSP、CPU)的空間。如上文所論述,存儲(chǔ)器控制器106經(jīng)配置以處理來自一個(gè)或一個(gè)以上主控裝置的 讀取/寫入指令,所述一個(gè)或一個(gè)以上主控裝置經(jīng)由總線104(例如,AXI總線、雙通道總線 等等)來與存儲(chǔ)器控制器通信。然而,可經(jīng)由替代總線132 (例如,配置總線)將開始地址、 結(jié)束地址或長度或者填充值中的至少一者傳送到存儲(chǔ)器控制器。而且,如相對(duì)于圖2A到圖 2D所論述,可經(jīng)由所述替代總線來傳送傳送屬性值,且可經(jīng)由發(fā)射總線來傳送相關(guān)地址及 數(shù)據(jù)。使用替代總線132可防止阻斷在存儲(chǔ)器控制器的尋址對(duì)應(yīng)于物理存儲(chǔ)器的架構(gòu)中供 由初始化命令使用的存儲(chǔ)器108的一部分,且還可減少標(biāo)準(zhǔn)總線104上的業(yè)務(wù)。在本發(fā)明的另一方面中,初始化邏輯可包括經(jīng)配置以檢測對(duì)填充范圍內(nèi)的存儲(chǔ)器 地址的讀取請(qǐng)求的邏輯及經(jīng)配置以在實(shí)際上將填充值寫入到所述讀取請(qǐng)求中指定的存儲(chǔ) 器地址之前返回填充值的邏輯。因此,甚至在將填充值寫入到存儲(chǔ)器之前仍可為讀取服務(wù), 這將改進(jìn)系統(tǒng)的響應(yīng)性。同樣,本發(fā)明的另一方面可包括經(jīng)配置以更新開始地址以反映最 后一個(gè)地址值的邏輯,所述最后一個(gè)地址值經(jīng)寫入以使得用填充值初始化的存儲(chǔ)器地址可 供存取。因此,通過將開始地址更新為待寫入的下一地址,已經(jīng)被初始化的任何存儲(chǔ)器地址 可供系統(tǒng)的剩余部分使用。在本發(fā)明的另一實(shí)施例中,初始化邏輯140或存儲(chǔ)器控制器106可進(jìn)一步包括經(jīng) 配置以接收存儲(chǔ)器的待復(fù)制的第一讀取地址的邏輯;經(jīng)配置以讀取存儲(chǔ)器的在所述第一讀 取地址處開始的讀取范圍的邏輯,其中所述讀取范圍的長度對(duì)應(yīng)于所述填充范圍的長度; 及經(jīng)配置以在用填充值寫入所述填充范圍的對(duì)應(yīng)地址之前基于從所述讀取范圍的每一地 址讀取的值來更新填充值的邏輯。因此,存儲(chǔ)器控制器106可使用初始化邏輯140來執(zhí)行 局部復(fù)制(例如,見指令實(shí)例2)。在此情況下,填充值并非為固定值,而是可根據(jù)從復(fù)制命 令中界定的存儲(chǔ)器位置讀取的數(shù)據(jù)來更新填充值,且可使用經(jīng)更新的值來初始化存儲(chǔ)器空 間。因此,初始化邏輯140可將對(duì)所述第一讀取存儲(chǔ)器地址的讀取請(qǐng)求放置于事務(wù)隊(duì)列150 上,從存儲(chǔ)器(例如,108)俘獲讀取數(shù)據(jù),且接著將用以將讀取值寫入到開始地址的寫入命令放置于傳送隊(duì)列150上。隨著處理繼續(xù)進(jìn)行,可更新讀取及寫入地址,直到到達(dá)讀取范圍 及填充范圍兩者的結(jié)束地址為止。從讀取范圍讀取的值可存儲(chǔ)于寫入緩沖器152或與初始 化邏輯140相關(guān)聯(lián)的另一緩沖器中,直到其被放置于傳送隊(duì)列上以供寫回到存儲(chǔ)器為止。 因此,本發(fā)明的此方面還可減少總線(例如,104或204/208)上的業(yè)務(wù)且改進(jìn)存儲(chǔ)器復(fù)制性 能,因?yàn)樗鎏幚硎窃诖鎯?chǔ)器控制器106處本地執(zhí)行。如上所述,初始化邏輯可基于接收到的指令類型而執(zhí)行存儲(chǔ)器初始化及存儲(chǔ)器復(fù) 制指令兩者。然而,本發(fā)明的實(shí)施例還可包括用于每一操作的個(gè)別化邏輯,其可實(shí)現(xiàn)為用于 每一功能的單獨(dú)狀態(tài)機(jī)。同樣,本發(fā)明的實(shí)施例不限于緩沖器、寄存器等等的所說明配置, 因?yàn)檫@些裝置可按系統(tǒng)設(shè)計(jì)者所需要而為共享的或分開的。將了解,可使用多種不同技術(shù)及技藝中的任一者來表示信息及信號(hào)。舉例來說,可 通過電壓、電流、電磁波、磁場或磁性粒子、光場或光學(xué)粒子或者其任何組合來表示可在整 個(gè)以上描述中所參考的數(shù)據(jù)、指令、命令、信息、信號(hào)、位及符號(hào)。此外,所屬領(lǐng)域的技術(shù)人員將了解,結(jié)合本文中揭示的實(shí)施例所描述的各種說明 性邏輯塊、模塊、電路及算法步驟可實(shí)施為電子硬件、計(jì)算機(jī)軟件或兩者的組合。為了清楚 地說明硬件與軟件的此可互換性,上文已大體上在功能性方面描述了各種說明性組件、塊、 模塊、電路及步驟。將此功能性實(shí)施為硬件還是軟件取決于特定應(yīng)用及強(qiáng)加于整個(gè)系統(tǒng)的 設(shè)計(jì)約束。熟練的技術(shù)人員可針對(duì)每一特定應(yīng)用以不同方式實(shí)施所述功能性,但此些實(shí)施 方案決策不應(yīng)被解釋為導(dǎo)致脫離本發(fā)明的實(shí)施例的范圍。結(jié)合本文所揭示的實(shí)施例而描述的各種說明性邏輯塊、模塊及電路可用經(jīng)設(shè)計(jì)以 執(zhí)行本文所述的功能的通用處理器、數(shù)字信號(hào)處理器(DSP)、專用集成電路(ASIC)、現(xiàn)場可 編程門陣列(FPGA)或其它可編程邏輯裝置、離散門或晶體管邏輯、離散硬件組件或其任何 組合來實(shí)施或執(zhí)行。通用處理器可為微處理器,但在替代方案中,處理器可為任何常規(guī)處理 器、控制器、微控制器或狀態(tài)機(jī)。處理器還可被實(shí)施為計(jì)算裝置的組合,例如,DSP與微處理 器的組合、多個(gè)微處理器、結(jié)合DSP核心的一個(gè)或一個(gè)以上微處理器或任何其它此類配置。結(jié)合本文中所揭示的實(shí)施例所描述的方法、序列及/或算法可直接在硬件、由處 理器執(zhí)行的軟件模塊或兩者的組合中體現(xiàn)。軟件模塊可駐存于RAM存儲(chǔ)器、快閃存儲(chǔ)器、 ROM存儲(chǔ)器、EPROM存儲(chǔ)器、EEPROM存儲(chǔ)器、寄存器、硬盤、可裝卸磁盤、CD-ROM或此項(xiàng)技術(shù) 中已知的任何其它形式的存儲(chǔ)媒體中。示范性存儲(chǔ)媒體耦合到處理器,使得處理器可從存 儲(chǔ)媒體讀取信息及將信息寫入到存儲(chǔ)媒體。在替代方案中,存儲(chǔ)媒體可與處理器成一體式。 處理器及存儲(chǔ)媒體可駐存于ASIC中。ASIC可駐存于用戶終端(例如,存取終端)中。在替 代方案中,處理器及存儲(chǔ)媒體可作為離散組件而駐存于用戶終端中。在如此描述本發(fā)明的實(shí)施例的情況下,將了解,可以許多方式對(duì)所述實(shí)施例進(jìn)行 改變。舉例來說,盡管圖IB的計(jì)算系統(tǒng)100經(jīng)說明為單處理器系統(tǒng),但本發(fā)明的實(shí)施例可 替代地實(shí)施于多處理器系統(tǒng)配置內(nèi)。盡管前文的揭示內(nèi)容展示本發(fā)明的說明性實(shí)施例,但應(yīng)注意,在不脫離如所附權(quán) 利要求書所界定的本發(fā)明的范圍的情況下,可在本文中進(jìn)行各種改變及修改。無需以任何 特定次序來執(zhí)行根據(jù)本文中描述的本發(fā)明實(shí)施例的方法項(xiàng)的功能、步驟及/或動(dòng)作。此外, 盡管可以單數(shù)形式描述或主張本發(fā)明的元件,但除非明確規(guī)定對(duì)于單數(shù)形式的限制,否則 還預(yù)期復(fù)數(shù)形式。
權(quán)利要求
一種存儲(chǔ)器控制器,其包含經(jīng)配置以接收存儲(chǔ)器的開始地址的邏輯;經(jīng)配置以接收所述存儲(chǔ)器的結(jié)束地址或長度的邏輯;經(jīng)配置以接收填充值的邏輯;及經(jīng)配置以將所述填充值寫入到所述存儲(chǔ)器中的由所述開始地址及結(jié)束地址或長度界定的任意長度的填充范圍中的邏輯。
2.根據(jù)權(quán)利要求1所述的存儲(chǔ)器控制器,其進(jìn)一步包含 經(jīng)配置以接收所述存儲(chǔ)器的待復(fù)制的第一讀取地址的邏輯;經(jīng)配置以讀取所述存儲(chǔ)器的在所述第一讀取地址處開始的讀取范圍的邏輯,其中所述 讀取范圍的長度對(duì)應(yīng)于所述填充范圍的長度;及經(jīng)配置以在用所述填充值寫入所述填充范圍的對(duì)應(yīng)地址之前基于從所述讀取范圍的 每一地址讀取的值來更新所述填充值的邏輯。
3.根據(jù)權(quán)利要求1所述的存儲(chǔ)器控制器,其中所述存儲(chǔ)器控制器經(jīng)配置以處理來自經(jīng) 由標(biāo)準(zhǔn)總線與所述存儲(chǔ)器控制器通信的一個(gè)或一個(gè)以上主控裝置的讀取/寫入指令。
4.根據(jù)權(quán)利要求3所述的存儲(chǔ)器控制器,其中所述開始地址、結(jié)束地址或長度或者填 充值中的至少一者是經(jīng)由替代總線而傳送到所述存儲(chǔ)器控制器的。
5.根據(jù)權(quán)利要求4所述的存儲(chǔ)器控制器,其中所述替代總線為配置總線。
6.根據(jù)權(quán)利要求1所述的存儲(chǔ)器控制器,其進(jìn)一步包含 傳送隊(duì)列;填充寄存器;及 寫入緩沖器。
7.根據(jù)權(quán)利要求6所述的存儲(chǔ)器控制器,其中用以將所述填充值寫入到所述存儲(chǔ)器中 的所述填充范圍中的寫入命令是經(jīng)由所述填充寄存器及所述傳送隊(duì)列而寫入到所述存儲(chǔ) 器的。
8.根據(jù)權(quán)利要求7所述的存儲(chǔ)器控制器,其中所述寫入緩沖器經(jīng)配置以從耦合到所述 存儲(chǔ)器控制器的一個(gè)或一個(gè)以上主控器接收寫入指令。
9.根據(jù)權(quán)利要求6所述的存儲(chǔ)器控制器,其進(jìn)一步包含經(jīng)配置以格式化用以將所述填充值寫入到所述填充范圍的寫入命令以遵照所述傳送 隊(duì)列的邏輯。
10.根據(jù)權(quán)利要求1所述的存儲(chǔ)器控制器,其進(jìn)一步包含經(jīng)配置以檢測對(duì)所述填充范圍內(nèi)的存儲(chǔ)器地址的讀取請(qǐng)求的邏輯;及 經(jīng)配置以在實(shí)際上將所述填充值寫入到所述讀取請(qǐng)求中指定的所述存儲(chǔ)器地址之前 返回所述填充值的邏輯。
11.根據(jù)權(quán)利要求1所述的存儲(chǔ)器控制器,其進(jìn)一步包含經(jīng)配置以更新所述開始地址以反映最后一個(gè)地址值的邏輯,所述最后一個(gè)地址值經(jīng)寫 入以使得用所述填充值初始化的存儲(chǔ)器地址可供存取。
12.—種在存儲(chǔ)器控制器處執(zhí)行的用于初始化或復(fù)制存儲(chǔ)器中的數(shù)據(jù)的方法,所述方 法包含接收存儲(chǔ)器的開始地址;接收所述存儲(chǔ)器的結(jié)束地址或長度;接收填充值;及將所述填充值寫入到所述存儲(chǔ)器中的由所述開始地址及結(jié)束地址或長度界定的任意 長度的填充范圍中。
13.根據(jù)權(quán)利要求12所述的方法,其進(jìn)一步包含接收所述存儲(chǔ)器的待復(fù)制的第一讀取地址;讀取所述存儲(chǔ)器的在所述第一讀取地址處開始的讀取范圍,其中所述讀取范圍的長度 對(duì)應(yīng)于所述填充范圍的長度;及在將所述填充值寫入到所述填充范圍的對(duì)應(yīng)地址之前,基于從所述讀取范圍的每一地 址讀取的值來更新所述填充值。
14.根據(jù)權(quán)利要求12所述的方法,其進(jìn)一步包含在所述存儲(chǔ)器控制器處處理來自經(jīng)由標(biāo)準(zhǔn)總線與所述存儲(chǔ)器控制器通信的一個(gè)或一 個(gè)以上主控裝置的讀取/寫入指令。
15.根據(jù)權(quán)利要求12所述的方法,其進(jìn)一步包含格式化用以將所述填充值寫入到所述填充范圍的寫入命令以遵照所述存儲(chǔ)器控制器 的傳送隊(duì)列。
16.根據(jù)權(quán)利要求12所述的方法,其進(jìn)一步包含檢測對(duì)所述填充范圍內(nèi)的存儲(chǔ)器地址的讀取請(qǐng)求;及在實(shí)際上將所述填充值寫入到所述讀取請(qǐng)求中指定的所述存儲(chǔ)器地址之前,返回所述 填充值。
17.根據(jù)權(quán)利要求12所述的方法,其進(jìn)一步包含更新所述開始地址以反映最后一個(gè)地址值,所述最后一個(gè)地址值經(jīng)寫入以使得用所述 填充值初始化的存儲(chǔ)器地址可供存取。
18.根據(jù)權(quán)利要求12所述的方法,其中從耦合到所述存儲(chǔ)器控制器的處理器接收初始 化指令。
19.一種計(jì)算機(jī)系統(tǒng),其包含處理器,其經(jīng)配置以發(fā)送包括待初始化或復(fù)制的任意范圍的存儲(chǔ)器地址的存儲(chǔ)器初始 化指令或存儲(chǔ)器復(fù)制指令中的一者;及存儲(chǔ)器控制器,其耦合到所述處理器,其中所述存儲(chǔ)器控制器經(jīng)配置以從所述處理器 接收所述存儲(chǔ)器初始化指令或存儲(chǔ)器復(fù)制指令,且經(jīng)配置以根據(jù)所述接收到的指令來初始 化或復(fù)制所述范圍的存儲(chǔ)器地址。
20.根據(jù)權(quán)利要求19所述的計(jì)算機(jī)系統(tǒng),其進(jìn)一步包含雙通道總線,其包含發(fā)射通道及讀取數(shù)據(jù)通道,其中所述存儲(chǔ)器控制器經(jīng)由所述雙通 道總線而耦合到所述處理器。
21.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)系統(tǒng),其進(jìn)一步包含替代總線,其耦合所述處理器與所述存儲(chǔ)器控制器,其中傳送請(qǐng)求屬性是在所述替代 總線上發(fā)射以向所述存儲(chǔ)器控制器告知對(duì)應(yīng)的存儲(chǔ)器初始化或復(fù)制指令。
22.根據(jù)權(quán)利要求21所述的計(jì)算機(jī)系統(tǒng),其中所述傳送請(qǐng)求屬性包括以下各項(xiàng)中的至 少一者第一存儲(chǔ)器初始化屬性,其與存儲(chǔ)器開始地址及存儲(chǔ)器結(jié)束地址相關(guān)聯(lián); 第二存儲(chǔ)器初始化屬性,其與存儲(chǔ)器開始地址、存儲(chǔ)器結(jié)束地址及初始化值相關(guān)聯(lián); 第三存儲(chǔ)器初始化請(qǐng)求,其與存儲(chǔ)器開始地址及長度相關(guān)聯(lián); 第四存儲(chǔ)器初始化屬性,其與存儲(chǔ)器開始地址、存儲(chǔ)器長度及初始化值相關(guān)聯(lián); 第一存儲(chǔ)器復(fù)制屬性,其與源開始地址、源結(jié)束地址、目的地開始地址及目的地結(jié)束地 址相關(guān)聯(lián);或第二存儲(chǔ)器復(fù)制屬性,其與源地址、目的地地址及復(fù)制長度相關(guān)聯(lián)。
23.根據(jù)權(quán)利要求20所述的計(jì)算機(jī)系統(tǒng),其中兩個(gè)存儲(chǔ)器地址是在第一廣播循環(huán)中在 所述發(fā)射通道上發(fā)射的。
24.一種在存儲(chǔ)器控制器處執(zhí)行的用于存儲(chǔ)器初始化的方法,所述方法包含 接收包括開始地址、結(jié)束地址及初始化值的存儲(chǔ)器初始化命令;將當(dāng)前地址設(shè)定為所述開始地址; 將所述初始化值寫入到所述存儲(chǔ)器中的所述當(dāng)前地址處; 使所述當(dāng)前地址遞增;及如果所述當(dāng)前地址不大于所述結(jié)束地址,則重復(fù)所述寫入及遞增。
25.一種在存儲(chǔ)器控制器處執(zhí)行的用于復(fù)制存儲(chǔ)器的方法,所述方法包含 接收包括源地址、目的地地址及復(fù)制計(jì)數(shù)的存儲(chǔ)器復(fù)制命令;將來自所述源地址的數(shù)據(jù)復(fù)制到所述目的地地址; 使所述源地址及所述目的地地址遞增; 使當(dāng)前計(jì)數(shù)遞增;及如果所述當(dāng)前計(jì)數(shù)不大于所述復(fù)制計(jì)數(shù),則重復(fù)所述復(fù)制及遞增。
全文摘要
本發(fā)明揭示用于在總線業(yè)務(wù)減少的情況下執(zhí)行存儲(chǔ)器塊初始化及復(fù)制功能的存儲(chǔ)器控制器及方法。所述存儲(chǔ)器控制器可通過接收存儲(chǔ)器的開始地址、所述存儲(chǔ)器的結(jié)束地址及填充值來執(zhí)行所述存儲(chǔ)器初始化。接著將所述填充值從所述存儲(chǔ)器控制器寫入到所述存儲(chǔ)器中由所述開始地址及結(jié)束地址界定的任意長度的填充范圍中。
文檔編號(hào)G06F13/16GK101815990SQ200880109893
公開日2010年8月25日 申請(qǐng)日期2008年10月2日 優(yōu)先權(quán)日2007年10月2日
發(fā)明者佩里·維爾曼·小雷馬克盧斯, 杰拉爾德·保羅·米夏拉克, 理查德·杰拉爾德·霍夫曼 申請(qǐng)人:高通股份有限公司