背景技術:
本發(fā)明通常涉及減少寫入寄存器所需的時間(或cpu周期)。
在當今的市場中,許多片上系統(tǒng)(soc)特征在于至少一個嵌入式微處理器。微處理器處理的重要任務是對soc中的各種寄存器進行編程。大多數(shù)情況下,通過固件的讀取-修改-寫入機構完成編程。這種機構在每次注冊更新所需的cpu周期方面是低效的?,F(xiàn)在將參考圖1描述傳統(tǒng)的讀取-修改-寫入機構。
圖1示出了傳統(tǒng)的讀取-修改-寫入機構100。
如圖所示,讀取-修改-寫入機構100包括地址解碼邏輯組件102、位寄存器104、位寄存器106以及位寄存器108。位寄存器104包括mux110和觸發(fā)器112,位寄存器106包括mux114和觸發(fā)器116,并且位寄存器108包括mux118和觸發(fā)器120。
地址解碼邏輯組件102被布置為通過線101接收地址信號。地址解碼邏輯組件102被附加地布置從而通過寫入線122的線向位寄存器104、106和108中的每一個輸出使能信號。
位寄存器104、106和108被布置成通過線148接收時鐘信號。位寄存器104、106和108被附加地布置從而分別通過讀取線124、126和128輸出存儲數(shù)據(jù)位中的一個。
mux110被布置以在輸入136處從寫入線156接收數(shù)據(jù),并且在輸入130處從讀取線126接收數(shù)據(jù)。mux114被布置用于在輸入138處從寫入線158接收數(shù)據(jù),并且用于在輸入132處從讀取線126接收數(shù)據(jù)。mux118被布置用于在輸入140處從寫入線160接收數(shù)據(jù),并用于在輸入134處從讀取線128接收數(shù)據(jù)。
最后,觸發(fā)器112、116和120被布置用于分別經(jīng)由讀取線124、126和128輸出數(shù)據(jù),并且用于在時鐘輸入162、164和166處從時鐘信號線148接收數(shù)據(jù)。每個觸發(fā)器還包括d輸入142、144和146。
讀取-修改-寫入機構100的操作從讀取命令開始。當提示機構進行讀取時,信號在讀取線124、126和128上分別被發(fā)送到位寄存器104、106和108中。一旦讀取信號被發(fā)送,當前包含在位寄存器104、106和108中的數(shù)據(jù)就經(jīng)由讀取線124、126和128從觸發(fā)器112、116和120的輸出轉發(fā)到它們對應的mux。在這一點上,每個mux112、116和120已經(jīng)讀入數(shù)據(jù)并將其存儲在它們對應的輸入130、132和134中。這完成了讀取步驟。
接下來,讀取-修改-寫入機構100開始修改寄存器中的內(nèi)容。在該示例中,讀取-修改-寫入機構100公開了與地址解碼邏輯組件102的一個地址相關聯(lián)的一組三個1位寄存器。應當注意,可以存在多組的位寄存器,每一組具有相關聯(lián)地址解碼邏輯組件。因此,為了說明的目的,僅示出了與地址解碼邏輯組件102相關聯(lián)的一組寄存器。
經(jīng)由線101將地址信號發(fā)送到地址解碼邏輯組件102。在接收到地址信號時,地址解碼邏輯組件102將值“1”輸出到總線122上。該值傳遞給每個mux(104,116,120),其使得mux能夠經(jīng)由寫入線156、158和160將值分別寫入第一輸入136、138和140,并且然后將新數(shù)據(jù)鎖存(latch)到對應的觸發(fā)器112、116和120。這樣,每個觸發(fā)器112、116和120中的數(shù)據(jù)現(xiàn)在已被修改。這樣完成了修改步驟。
在修改步驟之后,最后一步是分別經(jīng)由讀取線124、126和128從觸發(fā)器112、116、120的輸出中寫出(write-out)數(shù)據(jù)。
圖1所示的系統(tǒng)的問題在于首先讀取數(shù)據(jù)需要額外的周期。該機構通常涉及讀取每個寄存器的整個內(nèi)容、修改所有位,并且然后將整個內(nèi)容寫回寄存器。這種機構消耗了大部分時間。
需要不需要讀取步驟的系統(tǒng)和方法,從而可以減少編程各種寄存器的時間量。
技術實現(xiàn)要素:
在所描述的示例中,系統(tǒng)和方法可以顯著地減少寫入寄存器所需的時間(或cpu周期)。
根據(jù)各方面,提供了一種包括地址解碼邏輯組件、x個位寄存器、x/2個寫入線、x/2個讀取線、x/2個功能組件和掩碼組件的裝置,其中x是大于2或等于2的整數(shù)。地址解碼邏輯組件基于地址信號輸出使能信號。x個位寄存器包括第一部分和第二部分。x個位寄存器中的每一個可以分別存儲x個存儲數(shù)據(jù)位中的一個。第一部分具有第0個到第(x/2-l)個位寄存器,而第二部分具有第(x/2)個至第(x-1)個位寄存器。x/2個寫入線中的每一個可以分別向第一部分中的位寄存器中的對應一個提供x/2個新的數(shù)據(jù)位中的一個。x/2個讀取線中的每一個可分別從第一部分中的位寄存器的對應一個輸出存儲數(shù)據(jù)位中的一個。x/2個功能組件中的每一個可以向第一部分中的位寄存器中的對應一個分別提供修改的使能信號。掩碼組件可以生成x/2個掩碼信號,并且可以分別向功能組件的對應一個提供x/2個掩碼信號中的一個。每個修改的使能信號基于使能信號和對應的掩碼信號。第一部分中的位寄存器中的每一個可以分別基于對應的修改的使能信號來修改其中的存儲位。
另外的優(yōu)點和新穎特征部分地在以下描述中進行闡述。
附圖說明
圖1示出了讀取-修改-寫入的現(xiàn)有技術機構。
圖2示出了根據(jù)示例實施例的各方面的寫入機構。
圖3a示出了系統(tǒng)的實施方式的示例的前兩位的操作。
圖3b進一步示出了系統(tǒng)的實施方式的示例的前兩位的操作。
圖4a示出了根據(jù)示例實施例的各方面的寫入機構的示例實施例。
圖4b示出了根據(jù)示例實施例的各方面的寫入機構的另一示例實施例。
圖5示出了根據(jù)示例實施例的各方面向寄存器寫入的示例方法。
圖6示出了根據(jù)示例實施例的各方面的寫入機構的另一示例實施例。
圖7示出了根據(jù)示例實施例的各方面向寄存器寫入的示例方法。
具體實施方式
示例實施例被繪制為不需要讀取寄存器中的數(shù)據(jù)的寄存器寫入機構。根據(jù)示例實施例的各方面,每個寄存器被掩碼組件提供的掩碼位掩碼。在第一實施方式中,使用位寄存器的后半部分的中的數(shù)據(jù)對位寄存器的前半部分進行掩碼。在第二實施方式中,使用由掩碼組件生成的掩碼字來掩碼所有位寄存器。
現(xiàn)在將參考圖2到圖3b來描述根據(jù)示例實施例的第一方面使用掩碼組件而寫入到寄存器的一個方面。
圖2示出了根據(jù)示例實施例的第一方面的寫入機構200。
如圖所示,寫入機構200包括地址解碼邏輯組件102、掩碼組件202、多個功能組件,該多個功能組件樣本已被編號為功能組件204、功能組件206和功能組件208、多個位寄存器,該多個位寄存器的樣本已被編號為位寄存器104、位寄存器106、位寄存器212、位寄存器214、位寄存器216、位寄存器218、位寄存器220以及位寄存器222。
在該示例中,掩碼組件202可操作以生成x個掩碼信號,其中x是位的數(shù)目。每個掩碼信號被提供給多個對應的功能組件中的一個。在該示例中,功能組件204、206和208分別經(jīng)由線224、225和226接收掩碼信號。
功能組件204、206和208各自可操作以分別通過線228、230和232分別向位寄存器104、106和212提供修改的使能信號。
寫入機構200被示出為可以包括x個數(shù)目的功能組件和基于位大小的位寄存器的通用系統(tǒng)。例如,對于8位寄存器,x將等于8,并且位寄存器104、106、212、214、216、218、220和222將是有效位寄存器。
掩碼組件202通過掩碼線(其樣本被編號為224、225和226)提供到對應的功能組件的掩碼信號。地址解碼邏輯組件102另外向功能組件提供使能信號。
功能組件204、206、208可以是能夠基于來自地址解碼邏輯組件102的使能信號并且基于所接收的掩碼信號來輸出修改的使能信號的任何裝置或系統(tǒng)。功能組件204、206、208的輸出控制位寄存器,以便修改或回收存儲在其中的現(xiàn)有數(shù)據(jù)。功能組件的非限制性示例包括諸如或(or)門或與(and)門的數(shù)字邏輯組件。
現(xiàn)在將參考使用兩個寄存器的圖3a和圖3b進一步描述圖2中描述的實施例的示例。
圖3a示出了處于第一狀態(tài)的系統(tǒng)200的前兩位寄存器的操作。
如圖所示,圖3a包括地址解碼邏輯組件102,并且對于該示例,圖3a包括位寄存器104和位寄存器106。此外,在該實施例中,功能組件被實現(xiàn)為與門。特別地,圖2的功能組件204被實現(xiàn)為與門302,并且圖2的功能組件206被實現(xiàn)為與門304。
與門302和與門304被布置為接收x個掩碼信號中的一個和使能信號,并且可操作以通過線310和312將接收的信號的輸出306和308處的布爾與輸出到位寄存器104和106。
為了討論的目的,假設掩碼線224和226上的掩碼組件204的輸出為“0”值。這表示不需要修改寄存器104中的數(shù)據(jù)。該值沿掩碼線被發(fā)送到與門302和與門304。地址信號通過線101進入地址解碼邏輯組件102,使得地址解碼邏輯組件102輸出“1”。該信號沿著總線122傳遞到與門302和304。
與門302和304分別在輸出306和308處具有“0”。值“0”經(jīng)由線310提供給mux136并且經(jīng)由線312提供給mux138。零值指示mux136要選擇輸入130并將其傳遞給觸發(fā)器112的d輸入142。類似地,零值指示mux138要選擇輸入132并將其傳遞給觸發(fā)器116的d輸入144。由于沒有數(shù)據(jù)被修改,所以位寄存器104的現(xiàn)有值被再循環(huán)(recycle)并由讀取線314寫出,并且位寄存器106的現(xiàn)有值被再循環(huán)并由讀取線316寫出。
如圖3a所述,當掩碼組件204輸出“0”時,位寄存器104和106讀出其當前存儲值?,F(xiàn)在將參考圖3b描述輸出“1”的掩碼組件204的結果。
圖3b進一步示出處于第二狀態(tài)的系統(tǒng)200的前兩位寄存器的操作。
如圖所示,圖3b包括地址解碼邏輯組件102、位寄存器104和106,以及與(and)門302和304。
在該示例中,圖3b示出了與圖3a類似的設置。然而,在掩碼線224和226上看到的掩碼組件204的輸出是“1”值。這表示應該修改位寄存器104和位寄存器106中的數(shù)據(jù)。該值被接收在and門302和304處。地址信號通過線101進入地址解碼邏輯組件102,使得地址解碼邏輯組件102輸出“1”。該信號沿著總線122傳遞到與(and)門302和304。
當兩個輸入都是“1”值時,與門302的輸出306為“1”,并且與門304的輸出308為“1”。該值通過線310進入位寄存器104的mux110,并通過線312進入位寄存器106的mux114。值“1”指令mux110將輸入136選擇為輸出,并且指令mux114選擇輸入138作為輸出?,F(xiàn)在,來自寫入線156的新數(shù)據(jù)被傳遞到觸發(fā)器112的d輸入142,并且來自寫入線158的新數(shù)據(jù)被傳遞到觸發(fā)器116的d輸入138。由于數(shù)據(jù)被修改,所以由讀取線314和316寫出新數(shù)據(jù)。
通過對每個位寄存器使用如由掩碼組件204提供的掩碼信號,根據(jù)示例實施例的寄存器寫入不需要首先讀取每個寄存器中的數(shù)據(jù)。通過去除傳統(tǒng)系統(tǒng)的讀取-修改-寫入過程中的讀取步驟,示例實施例降低了寫入寄存器所需的時間和處理能力。
在第一示例實施例中,位寄存器的前半部分被布置成從位寄存器的后半部分接收掩碼信號。例如,在8位寄存器中,第一到第四個位寄存器將分別從第五位到第八位寄存器接收掩碼信號。類似地,在16位寄存器中,第一到第八位寄存器將分別從第九位到第十六位寄存器接收掩碼信號。換句話說,第一至第(x/2)位寄存器將從第((χ+1)/2)至第x位寄存器接收掩碼信號?,F(xiàn)在將參考圖4a到圖5進一步描述掩碼組件的該示例實施例。
圖4a示出了根據(jù)示例實施例的各方面的寫入機構400的示例實施例。
如圖所示,寫入機構400包括地址解碼邏輯組件102、掩碼組件402以及寫入機構200的功能組件和位寄存器。
在該實施例中,上部的(upper)x/2個位寄存器216、218、220和222被布置成通過線234和236從其樣本被編號為434和436的相應的功能組件接收數(shù)據(jù)。上部的x/2個位寄存器216、218、220和222還被布置成從其中的樣本被編號為418、420、422和424的多個寫入線408接收數(shù)據(jù)。
為了簡化討論,并未示出用于位寄存器104、106、212、214、216、218、220和222中的每一個的讀取線(例如,上面參考圖3討論的讀取線314和316)。應當注意,每個位寄存器將分別具有能夠輸出寄存器內(nèi)的數(shù)據(jù)值的關聯(lián)的讀取線。
寫入行408被額外布置從而將數(shù)據(jù)輸入到掩碼組件402內(nèi)的其樣本分別編號為438、440、442和444的多個掩碼線426。掩碼線426經(jīng)由線224、226,…,438和440連接到x個功能組件204、206,…,208和210的下半部分。
寫入機構400針對掩碼組件402使用x位寄存器的上半部分內(nèi)的數(shù)據(jù),寫入機構400寫回到位寄存器的下半部分。請注意,x可以是大于2或等于2的任何整數(shù)。此外,應當注意,如果x被選擇為32位,則將存在如由寫入線406和408內(nèi)的重復點(repetitivedot)、位寄存器之間的重復點434以及功能組件之間的重復點436所指示的額外的寫入線(和讀取線-未示出)、位寄存器和功能組件。
為了討論的目的,假設x為8,使得寫入機構400具有8個位寄存器。當x等于8時,位寄存器104、106、212、214、216、218、220和222將是8個位寄存器。此外,其樣本包括204、206和208的相應功能組件的數(shù)量為八個。
在另一示例實施例中,不使用上部的x/2個位寄存器。如圖4b所示,移除寄存器216、218、220和220以及對應的功能組件。此外,寫入線408不再到寄存器216、218、220和222(如線418、420、422和424的虛線部分所示)。當上部的x/2個位寄存器不需要由系統(tǒng)使用時,該實施例可以用于節(jié)省芯片有效面積(chiprealestate)。為了進一步討論的目的,將使用圖4a的實施例。
現(xiàn)在將參考圖5描述操作寫入機構400的方法。
圖5示出了根據(jù)示例實施例的各方面的用于將數(shù)據(jù)寫入到寫入機構400的方法500。
如在圖中所示,方法500開始(s502),并且位寄存器具有在其中寫入的數(shù)據(jù)(s504)。例如,返回到圖4a,由寫入線404的組所示的寫入線的樣本將數(shù)據(jù)寫入到其相應的位寄存器。提供給上部四個位寄存器216、218、220和222的寫入數(shù)據(jù)另外被用作掩碼信號。
接下來,掩碼組件402分別通過掩碼線418、420、422和424并且然后通過線224、226、438和440分別發(fā)送掩碼信號到相應功能組件204、206、208和210的第二輸入。通過線122來自地址解碼邏輯組件102的使能信號被附加地提供給功能組件204、206、208和210中的每一個。以類似于上面參考圖3a-3b討論的方式,功能組件204、206、208和210的輸出分別通過線228、230、232和234提供給位寄存器104、106、212和214。
如上面參考圖3a-3b所討論的,功能組件204、206、208和210的輸出指示位寄存器104、106、212和214中的每一個內(nèi)的mux(未示出)是否修改存儲在位寄存器104、106、212和214中的每一個的數(shù)據(jù)。
回到圖5,現(xiàn)在數(shù)據(jù)已被寫入寄存器中(s504),現(xiàn)在從寄存器讀取數(shù)據(jù)(s506)。例如,參考圖4a,新的寫入數(shù)據(jù)將通過讀取線(未示出)從寄存器104、106和212被讀出。
返回到圖5,現(xiàn)在從寄存器讀取數(shù)據(jù)(s506),方法500停止(s508)。
在上面參考圖4-5討論的示例中,掩碼組件402使用寫入數(shù)據(jù)的高8位作為寫入數(shù)據(jù)的低8位的掩碼位。使用這種系統(tǒng)和方法,不需要讀取、然后修改、然后按照傳統(tǒng)系統(tǒng)和方法中的要求進行寫入。相反,寫入在第一周期中完成,并且讀取在第二周期中完成。該示例實施例可以在僅需要改變位寄存器的一半中的數(shù)據(jù)的系統(tǒng)中實現(xiàn)。
可能存在可能需要改變所有位寄存器中的數(shù)據(jù)的其它情況?,F(xiàn)在將參考圖6-7來描述解決這種情況的示例實施例。
圖6示出了根據(jù)示例實施例的各方面的寫入機構600的另一示例實施例。
如圖所示,圖6包括地址解碼邏輯組件102、掩碼組件602、寫入機構200的功能組件以及位寄存器。
掩碼組件602被布置用于接收來自寫入線604的掩碼寄存器寫入信號。
寫入機構600是使用掩碼組件僅寫入所需位的第二實施方式。在該示例中,寫入機構600包括x位寄存器,其中x可以是任何整數(shù)。如果x為32,例如,制成32位寄存器,則將會有如寫入線406和408內(nèi)的重復點、位寄存器434和功能組件436所指示的額外寫入線(和讀取線(未示出))、位寄存器和功能組件。
為了討論的目的,假設x為8,使得寫入機構400具有8位寄存器。當x等于8時,位寄存器104、106、212、214、216、218、220和222將是8個位寄存器。此外,其樣本包括204、206和208的相應功能組件的數(shù)量為八個。
現(xiàn)在將參考圖7描述操作寫入機構600的方法。
圖7示出了根據(jù)示例實施例的各方面的用于將數(shù)據(jù)寫入到寫入機構400的方法700。
如圖所示,方法700開始(s702),并且掩碼寄存器寫入信號被寫入到掩碼寄存器中(s704)。例如,在一個周期中,掩碼組件602從寫入線604接收掩碼寄存器寫入信號。
參考圖7,現(xiàn)在完成對掩碼寄存器的寫入(s704),位寄存器具有寫入其中的數(shù)據(jù)(s706)。例如,返回到圖6,寫入線410、412、414、416、418、420、422和424將數(shù)據(jù)分別寫入到位寄存器104、106、212、214、216、218、220和222中。
此外,掩碼組件602通過線224、226、438和440將掩碼信號輸出到其樣品被編號為204、206和208的功能組件。在示例實施例中,掩碼信號對應于掩碼寄存器寫入信號的位。例如,在8位系統(tǒng)中,掩碼寄存器寫入信號是8位二進制字,其中8位二進制字中的每個位將是用于相應功能組件的掩碼信號。從掩碼組件發(fā)送的掩碼信號和來自地址解碼邏輯組件102的使能信號將然后作為用于功能組件中的每一個功能組件的輸入,這些功能組件包括那些被標記為功能組件204、206、208和210的功能組件。
以與上文參考圖3a-3b所討論的相似的方式,功能組件204、206、208和210的輸出分別通過線228、230、232和234提供給位寄存器104、106、212和214。
回到圖7,現(xiàn)在數(shù)據(jù)已被寫入寄存器(s706),從寄存器讀取數(shù)據(jù)(s708)。例如,返回到圖6,功能組件的輸出將指示對應的位寄存器內(nèi)的mux是否需要修改存儲在位寄存器內(nèi)的數(shù)據(jù)。如果沒有修改,則該值被掩碼,并且位寄存器中的現(xiàn)有數(shù)據(jù)將被再循環(huán),并通過讀取線(未示出)讀出。如果有修改,則新的數(shù)據(jù)將被寫入位寄存器中,并且然后通過讀取線讀出(未示出)。該過程也需要一個周期,總共有兩個完整的周期。
返回到圖7,現(xiàn)在已從寄存器讀取數(shù)據(jù)(s708),方法700停止(s710)。
在上面參考圖6-7所討論的示例中,提供具有掩碼寄存器寫入信號的掩碼組件602,以生成用于所有位寄存器的掩碼信號。使用這種系統(tǒng)和方法,再一次無需進行讀取、然后修改、然后按照傳統(tǒng)系統(tǒng)和方法中的要求進行寫入。相反,掩碼信號寫入和寄存器寫入都在第一周期中完成,并且在第二周期中完成寄存器的讀取。該示例實施例可以在其中可能需要改變所有位寄存器中的數(shù)據(jù)的系統(tǒng)中實現(xiàn)。
在所描述的實施例中,修改是可能的,并且在權利要求的范圍內(nèi),其它實施例是可能的。