微码修补系统及方法

文档序号:6609120阅读:144来源:国知局
专利名称:微码修补系统及方法
技术领域
本发明是有关于嵌入式程序,特别是有关于一种对嵌入式只读存储器实 施修补机制的系统及方法。
背景技术
对于具有嵌入式处理器的通用目的的专用集成电路(Application-specific Integrated Circuit; ASIC)而言,必须具备程序存储器,以储存指令码。此程序 存储器可以是只读存储器(Read Only Memory; ROM)、随机存取存储器 (Random Access Memory; RAM),或两者的组合。 一般来说,相同容量的ROM 与RAM, ROM所占的面积较小,所以用ROM储存指令码中的绝大部分, 也因此,初始化后就不能再对ROM进行修改。所以,当需要存取并执行储存 在ROM中的指令码时,如果ROM内部储存着错误的指令码或是需要增加更 多指令码,就需要一种修补机制。
一种修补机制是略过错误指令,并以另一指令来取代错误指令,以命令 处理器存取一修补存储器(PatchMemory)内的正确指令。图1显示这种修补机 制的一范例,其为美国专利US6,891,765所揭示的电路100的方框图。如图所 示,电路100包括处理器102、程序空间(存储器)104、修补逻辑电路106以 及选取电路108。存储器104包含只读存储器(ROM)104a及修补存储器104b。 处理器102提供地址PAB至存储器104,存储器104响应地址PAB并提供数 据项DATA至选取电路108。同时,处理器102也提供地址PAB至修补逻辑 电路106。如果地址PAB与预先设定的多个地址中的任何一个均不符合而不 需要被修补、修正或扩展,则修补逻辑电路106取消(de-assert)命令信号
PTCH一DAT一SEL。但是,如果地址PAB符合该多个预先设定的地址中的任何 一个,则使命令信号PTCH—DAT—SEL有效(assert),并产生一分支指令PI重 新命令处理器102对修补存储器104b进行存取。选取电路108根据命令信号 PTCH一DAT一SEL,选择由存储器104所接收的数据项DATA或由修补逻辑电 路106所接收的分支指令PI作为指令项目PDBI,并将指令项目PDBI通过数 据总线传送至处理器102。
另一种修补机制是将送至只读存储器的地址加以修改。图2及图3分别 是这种修补机制的两个范例,分别显示美国专利US 6,438,664以及中国台湾 专利TWI 236,018所揭示的电路200及300。请参考图2,定序器(sequencer)92 控制多工器(MUX)86以选取存储器的下一地址。下一地址被传送至下一地址 缓存器94以选取来自只读存储器64a或修补存储器64b的连接线。所选择的 连接线被提供至输出缓存器80。下一地址也被提供至比较器84。接着,比较 器84将下一地址与储存在多个匹配缓存器88的数值加以比较。如果来自下 一地址缓存器94的下一地址与匹配缓存器88中的任何一个数值相符,则比 较器84从一查找表90中选择出一对应的修补RAM地址。从查找表90中所 选择出的地址被送至多工器86。比较器84也向定序器92报告符合情况发生 的事件,以便定序器92控制多工器86从查找表90中选出地址。由只读存储 器64a输入至输出缓存器80的连接线被取消,并且来自修补存储器64b中的 修补将从查找表90所指示的地址开始执行。
如图3所示,电路300包括只读存储器301、随机存取存储器303、计数 器305以及比较与加载单元311。计数器305产生下一地址以对只读存储器 301或随机存取存储器303进行存取。计数器305也提供下一地址313至比较 与加载单元311。当下一地址与储存在比较与加载单元311中的预先设定地址 CHkl-CHk4其中之一相符时,比较与加载单元311发出一重置信号317以及 一转移地址信号319至计数器305。转移地址信号319表示除错/更新程序地 址A1至A4的其中之一,重置信号317将计数器305重置,以将下一地址313转换为转移地址信号319所表示的地址。
在电路100、 200及300中,下一地址不仅传送至ROM,也传送至一电 路(修补逻辑电路106、比较器84或比较与加载单元311)以判断其是否与需要 修补、修正或扩展的多个预先设定地址当中的任一个相符。结果,被修补、 修正或扩展的ROM地址仍被存取并产生将被抛弃或取消的不必要的指令码。 因此,电力及时间被浪费在向ROM中存取不必要的指令码上。此外,电路 100内的处理器102、或是电路200内的定序器92及多工器86、或电路300 内的计数器305.需要被重新指派或重置以产生一存取修补存储器的地址。这 种重新指派或重置的动作影响了正常产生下一 ROM地址的流程并且浪费了 电力及时间。

发明内容
本发明提供了一种可以解决以上技术问题的微码修补系统及方法。
本发明提供了一种微码修补系统,包括存储器单元,地址选取单元,以 及捕捉及修补逻辑单元。存储器单元包括用以储存至少一微码主指令的第一 存储器,以及用以提供至少一微码修补指令的第二存储器,存储器单元根据 选取输出地址来被存取。地址选取单元用以提供第一输出信号。捕捉及修补 逻辑单元耦接于地址选取单元及记忆单元之间,用以判断第一输出地址是否与至少一错误信号当中的任一相符,并且当第一输出地址与错误地址当中之 一相符时,选出一选取修补地址作为一第二输出地址以存取第二存储器;当 第一输出地址与错误地址均不相符时,则选取第一输出地址作为第二输出地 址。第二输出地址耦接于存储器单元。
本发明提供了一种微码修补方法,用以对一存储器单元进行存取,其中 存储器单元包括用以储存至少一微码主指令的第一存储器,以及用以储存至 少一微码修补指令的第二存储器。该方法包括提供第一存储器的至少一错 误地址;提供第一输出地址;判断第一输出地址是否与错误地址当中任一相符,如果是,则第二输出地址为存取该第二存储器的一选取修补地址,如果
否,则第二输出地址为该第一输出地址;以及根据该第二输出地址来对存储 器单元进行存取。
本发明提供的微码修补的系统及方法,通过先判断第一输出地址是否需 要被替代为一存取第二存储器的地址之后,再根据判断结果来选取第二输出 地址,不需要存取需修补、修正或扩展的ROM地址,并且修补存储器的修补 地址的产生过程也不会干扰到下一 ROM地址的正常产生流程,因而能够节省 电力及时间。


图1显示一现有微码修补机制的电路方框图。
图2显示另一现有微码修补机制的电路方框图。
图3显示另一现有微码修补机制的电路方框图。
图4显示本发明提供的微码修补系统的方框示意图的一实施例。
图5显示本发明提供的微码修补系统的方框示意图的另一实施例。
图6显示图4及图5中所示的比较模块及地址选取器的结构示意图。
图7显示本发明所提供的微码修补方法的流程图的一实施例。
具体实施例方式
图4显示本发明一实施例的微码修补系统400的方框图。如图所示,微 码修补系统400包括一存储器单元410及一处理器430。
存储器单元410包括第一存储器411及第二存储器412。第一存储器411 可以是只读存储器(Read Only Memory; ROM),其包含存储器单元410的存 储器空间的第一地址范围,用以储存至少一微码主指令。第二存储器412可 以是随机存取存储器(Random Access Memory; RAM),其包含存储器单元410 的存储器空间的第二地址范围,用以储存至少一微码修补指令。第一及第二
存储器4U、 412可以是彼此独立的分离存储器,也可以是一个存储器的第一 及第二部分。
如图所示,处理器430包括地址选取单元432、捕捉及修补逻辑单元434, 地址缓存器436,以及地址累加器438。地址选取单元432接收至少一输入目 标地址(如Ain—,至Ai^)以存取第一存储器411,以及从地址累加器438接收下 一目标地址Anext,并根据顺序控制信号Ssc在所接收的地址当中选一个作为第 一输出地址Aoj,然后提供第一输出地址A"至捕捉及修补逻辑单元434。 在一实施例中,地址选取单元432是一多工器。输入目标地址Ain」至Ain—n, 例如, 一个由指令译码器(图中未示)所产生的用以读取第一存储器411所储存 的分支指令的目标地址,或一个由中断控制器(图中未示)所产生的用以存取第 一存储器411所储存的中断处理指令的起始地址,等等。
当接收到第一输出信号A0J之后,捕捉及修补逻辑单元434检查第一输 出信号A0J是否与至少一错误地址(例如为AbugJ至Abu^)当中任一相符合, 并根据该检查结果来提供一第二输出地址A0—2以对存取存储器单元410进行 存取。错误地址Ab^至Abug—m指示储存在第一存储器411中需要被修补、修 正或扩展的微码主指令的起始地址。
假设第一输出地址A0J与错误地址Abug—,至Abug—m当中之一(如Abug—O相 符,则捕捉及修补逻辑单元434会从至少一修补地址(譬如为ApatehJ至Apatch_m)
当中选取出修补地址ApatdU,并输出修补地址Apatchj作为第二输出地址A0_2
以对第二存储器412进行存取。修补地址Ap自hj至Apateh—m分别与错误地址
AbugJ至Abug一m相对应。每一修补地址ApatehJ至Apat^m是第二存储器412所
储存的某一更新/除错程序的起始地址。并且每一更新/除错程序是以一个重新
指派处理器430再次存取第一存储器411的微码修补指令作为结束。
然而,假使第一输出地址A0」与错误地址Ao-1至Abug_m当中任一均不相 符,则捕捉及修补逻辑单元434直接输出第一输出地址Ao-1作为第二输出地 址A0-2以存取存储器单元410。应该注意的是,捕捉及修补逻辑单元434也可不设置于处理器430之内,而可将其设置于处理器430之外并与处理器430相对独立。捕捉及修补逻辑单元434的具体结构将在对图6的相关描述中说明。
地址缓存器436暂存第二输出地址A0_2,并将第二输出地址A0—2提供至地址累加器438。地址累加器438将第二输出地址Aoj增加一个单位地址(例如为1)以提供下一目标地址Anext。
因此,即使第一存储器411是储存着不可修改的数据或指令的只读存储器,仍然可以替代或增加数据或指令到第一存储器411所储存的数据或指令中。举例来说,当需要忽略第一存储器411的地址Ah至Ah+m所指示的微码主指令Ch至Ch+m时,可以将一错误地址设定为地址Ah,地址Ah所对应的修补地址所指示的一微码修补指令,指示处理器430以存取第一存储器411的地址Ah+m+1。在另一范例中,当第一存储器411的地址Ah至Ah+m所指示的微码主指令需要被替代为第二存储器412的地址Ap至Aq所指示的微码修补指令时,可以将一错误地址设定为地址Ah,地址Ah所对应的修补地址设定为Ap,且第二存储器412的地址Aq+1所指示的微码修补指令可以指示处理器430以存取第一存储器411的地址Ah+m+1,。在又一范例中,当第一存储器411的地址 Ap至Aq所指示的微码主指令需要被插入到第一存储器411的地址Ah至Ah+1 所指示的微码主指令之间时,可以将一错误地址设定为地址Ah,地址Ah所对 应的修补地址设定为Ap,且第二存储器412的地址Aq+1所指示的微码修补指令重新指示处理器430以存取第一存储器411的地Ah+1。
图5是本发明另一实施例所提供的一微码修补系统500的一方框图,其与图4所示的微码修补系统的差异仅在于由地址缓存器436提供第二输出地址A0—2至存储器单元410,而不是由捕捉及修补逻辑单元434提供第二输出地址Ao一2。其余结构均很类似,在此不再赘述。
图6是本发明图4及图5所示的捕捉及修补逻辑单元434的方框图的实 施例。如图所示,捕捉及修补电路434包括一比较模块610以及一地址选取器620。比较模块610判断第一输出地址A0—1是否与至少一错误地址(譬如为 Abug_1至Abug_m)当中任一相符,其中错误地址指示第一存储器410所储存的需 要被修补、修正或扩展的微码主指令。比较模块610产生一地址选取信号SAs 以指示错误地址当中哪一个与第一输出地址A0J相符,并将地址选取信号SAS 提供至地址选取器620。当接收到地址选取信号SAS以及第一输出地址A0J 后,假如地址选取信号SAs指示错误地址当中之一与第一输出地址Aoj相符, 则地址选取器620会从至少一修补地址(譬如为Apateh—,至Apateh—m)中选取一个 作为第二输出地址A0—2,其中修补地址Apatch—,至Apatch—m分别与错误地址AbugJ至Abug^相对应;反之,假如地址选取信号sas指示出错误地址均不与第一输出地址A0J相符,则地址选取器620直接输出第一输出地址A0J作为第二输 出地址Ao_2。
图6也显示了比较模块610及地址选取器620的具体结构。如图所示, 比较模块610包括一比较单元612以及一使能逻辑单元616。比较单元612包 括多个逻辑方框613i至613z。每一逻辑方框613,至613z可以是一比较器, 用以比较第一输出地址A0J与多个预先设定地址ApreJ至Apre_z当中之一 以产 生一代表比较结果的比较输出(O!至Oz)。预先设定地址Apre—i至Apre—z可由地 址缓存器接收而得,也可从外部产生。预先设定地址Ap^至Apre—z包括错误 地址AbugJ至Abug—m。由于错误地址的数目(m)是变动的,因此并非所有储存 在地址缓存器内的预先设定地址Aprej至Apre_z均用作错误地址AbugJ至 Abug—m。比较单元612接着提供一匹配信号Sm(即比较输出0,至Oz)至使能逻 辑单元616,以指示预先设定地址ApreJ至Apre_z当中哪一个与第一输出地址 A0J相符。
使能逻辑单元616包括多个逻辑门617!至617z,每一逻辑门是用以使能/ 不使能该比较输出至Oz。由于并不是所有预先设定地址ApreJ至Ap^z均 用来作为指示第一存储器411需要修补、修正或扩展的错误地址AbugJ至 AbU2m,因此当逻辑方框接收到并未用作错误地址的预先设定地址时,使能逻
辑门617i至617z不使能其所产生的比较输出;而当逻辑方框接收到用作错误 地址的预先设定地址时,使能逻辑门617!至617z将使能所产生的比较输出。
每一逻辑门617,至617z可为一逻辑与门(如图所示),其具有一第一输入, 用以从逻辑方框613,至613z当中之一接收一比较输出; 一第二输入,用以接 收多个使能比特(譬如为ENo至EN》当中之一,以提供一使能输出EOi至EOz。 使能比特ENo至ENz可由使能缓存器接收而得,或可由外部产生。值为"1" 的使能比特ENo至ENz是将比较信号O,至Oz使能,而值为"0"的使能比特 ENo至ENz是将比较信号C^至Oz非使能。使能逻辑单元616接着输出地址 选取信号Sas(即使能瑜出EO,至EOz),地址选取信号SAs指示目前当作错误 地址Apre-1至Apre_z的预先设定地址Apre」至Apre_z当中哪一个与第一输出地 址Ao_1,相符。
图6也显示了比较模块610及地址选取器620的具体结构。如图所示, 地址选取器620可为一多工器,其接收第一输入地址A0—1以及多个修补地址 Apatch_1至Apateh—m,用以根据地址选取信号SAS而选取当中之一作为第二输出地
址Ao,修补地址Ap^y至Apateh^可由地址缓存器接收而得,或可从外部产 生。如前所述,修补地址Apatehj至Apateh—m可提供用于第二存储器412内更新 /除错程序的新指令部分的起始地址。如此一来,如果第一输出地址Aoj与预
先设定地址ApreJ至Apre_z中的作为错误地址的一特定地址相符,处理器410 所执行的程序可以分支为修补地址ApatehJ至Apateh—m。
总之,处理器430产生第一输出地址Ao—p其中第一输出地址Aoj是被 初始化以对第一存储器411进行存取,并判断第一输出地址A0J是否需要被 取代为一存取第二存储器412的地址,接着根据判断结果选取第二输出地址 Ao—2以对存储器单元410进行存取。如此一来,需要被修补、修正或扩展的 地址会在被传送至第一存储器(ROM)之前就被判断并取代掉,因此能避免对 第一存储器的不必要的存取。这与现有电路100、 200及300有所不同,现有 电路100、 200及300中需要被修补、修正或扩展的地址仍然被传送至ROM。
此外,用以取代被修补、修正或扩展的修补地址是直接传送至存储器单元410 而非传送至现有电路100中的处理器102、现有电路200中的多工器86或现 有电路300中的计数器305,因此本发明中地址选取单元432不需要重新指派 或重新设定的动作,从而产生第一存储器的下一地址的正常程序不会被中断。
图7显示本发明所提供的微码修补方法的流程图的一实施例,其中微码 修补方法包括存取一存储器单元,其包括用以储存至少一微码主要指令的 第一存储器,以及用以储存至少一微码修补指令的第二存储器。
首先,在步骤710中,将第一输出地址初始化以存取第一存储器的某一 地址。更具体来说,步骤710是从至少一用以存取第一存储器的输入地址当 中,选取一地址作为第一输出地址,例如,由一指令译码器所产生的一目标 地址,用以读取第一存储器所储存的一分支指令、或是由一中断控制单元所 产生的一起始地址,用以储存该第一存储器所储存的中断程序码等等。
接下来,在步骤720中,判断第一输出地址是否与错误地址当中任一相符。
如果是,则程序进入步骤731以提供第二存储器的一选取修补地址作为 第二输出地址,并且第二输出地址是用来存取存储器单元。在步骤731的一 实施例中,提供至少一对应至错误地址的修补地址,并且与第一输出地址相 符的错误地址所对应的修补地址被选取为选取修补地址。
如果不是,程序会进入步骤732以输出第一输出地址作为第二输出地址, 并且第二输出地址是用来存取存储器单元。
接下来,在步骤740中,重新产生第一输出地址,并且程序回到步骤720。 在一实施例中,最先产生的是第二输出地址的下一相邻地址,接着在步骤710 所描述的输入地址以及第二输出地址的下一相邻地址中,选出第一输出地址。
总之,本发明是在判断被初始化为存取第一存储器的第一输出地址是否 需要被替代为存取第二存储器的地址之后,才根据先前的判断结果来选取第 二输出地址提供到存储器单元。如此一来,需要被修补、修正或扩展的地址
会在被传送至第一存储器(ROM)之前就被取代掉,因此能避免对第一存储器 的不必要存取。这与现有电路IOO、 200及300有所不同,现有电路IOO、 200 及300中必须被修补、修正或扩展的地址仍然被传送至ROM。此外,用以取 代被修补、修正或扩展的修补地址被直接传送至存储器单元,因此本发明不 需要重新指派或重新设定的动作。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何 所属技术领域中的技术人员,在不脱离本发明的范围内,可以做一些改动, 因此本发明的保护范围应与权利要求所界定的范围为准。
权利要求
1. 一种微码修补系统,其特征在于,该微码修补系统包括一存储器单元,其包括一用以储存至少一微码主指令的第一存储器以及一用以提供至少一微码修补指令的第二存储器,该存储器单元根据一选取输出地址被存取;一地址选取单元,用以提供一第一输出地址;以及一捕捉及修补逻辑单元,耦接于所述的地址选取单元及所述的存储器单元之间,用以判断所述的第一输出地址是否与至少一错误地址中任一相符,并且当该第一输出地址与该错误地址其中之一相符时,选出一用于存取所述的第二存储器的选取修补地址作为一第二输出地址,当所述的第一输出地址与所述的错误地址均不相符时,选取该第一输出地址作为一第二输出地址,其中该第二输出地址耦接于所述的存储器单元。
2. 如权利要求1所述的微码修补系统,其特征在于,所述的第一存储器 是只读存储器,所述的第二存储器是随机存取存储器。
3. 如权利要求1所述的微码修补系统,其特征在于,所述的地址选取单 元接收多个输入地址,并选出其中之一作为所述的第一输出地址,其中所述 的多个输入地址包括至少一用以存取所述的第一存储器的地址。
4. 如权利要求3所述的微码修补系统,其特征在于,所述的多个输入地 址进一步包括所述的第二输出地址的下一相邻地址。
5. 如权利要求1所述的微码修补系统,其特征在于,该微码修补系统进 一步包括一地址缓存器,用以暂存所述的捕捉及修补逻辑单元所输出的所述的第 二输出地址;以及一地址累加器,用以增加所述的地址缓存器所输出的所述的第二输出地 址以提供所述的第二输出地址的下一相邻地址。
6. 如权利要求5所述的微码修补系统,其特征在于,所述的地址缓存器 耦接于所述的捕捉及修补逻辑单元,并且提供所述的第二输出地址至所述的 存储器单元。
7. 如权利要求1所述的微码修补系统,其特征在于,所述的捕捉及修补 逻辑单元包括一比较模块,用以判断所述的第一输出地址是否与至少一所述的多个错 误地址当中任一相符,并输出一地址选取信号以指示所述的多个错误地址当 中哪一个与所述的第一输出地址相符;以及一地址选取器,用以接收所述的地址选取信号以及所述的第一输出地址, 以及若所述的地址选取信号指示所述的多个错误地址其中之一与所述的第一 输出地址相符时,选取一对应的修补地址作为所述的选取修补地址并提供所 述的选取修补地址作为所述的第二输出地址;否则,选取所述的第一输出地 址作为所述的第二输出地址。
8. 如权利要求1所述的微码修补系统,其特征在于,所述的错误地址分别 对应至少一修补地址,以及若所述的第一输出地址与一错误地址相符时,所 述的捕捉及修补逻辑单元选出一对应的修补地址作为所述的选取修补地址。
9. 如权利要求8所述的微码修补系统,其特征在于,所述的捕捉及修补 逻辑单元包括一比较单元,用以判断所述的第一输出地址是否与至少一预先设定地址 当中任一相符,所述的多个预先设定地址包括所述的错误地址,并输出一匹 配信号用以指示所述的多个预先设定信号当中哪一个与所述的第一输出地址 相符;以及一使能逻辑单元,用以判断所述的匹配信号的使能状态,以提供所述的 地址选取信号用以指示所述的多个设定为使能状态的预先设定地址当中哪一 个与所述的第一输出信号相符。
10. —种微码修补方法,用以存取一存储器单元,所述的存储器单元包括 一用以储存至少一微码主指令的第一存储器以及一用以储存至少一微码修补 指令的第二存储器,其特征在于,所述的微码修补方法包括 提供一第一输出地址;判断所述的第一输出地址是否与至少一错误地址当中任一相符;以及 根据所述的判断结果以输出一第二输出地址,假如所述的判断结果为是, 则所述的第二输出地址为一存取所述的第二存储器的一选取修补地址,假如 所述的判断结果为否,则所述的第二输出地址为所述的第一输出地址,并根 据所述的第二输出地址以存取所述的存储器单元。
11. 如权利要求10所述的微码修补方法,其特征在于,提供所述的选取 修补地址作为所述的第二输出地址以存取所述的第二存储器的步骤包括.-提供至少一修补地址,分别对应至所述的错误地址;以及 选取所述的多个修补地址当中之一对应于与所述的第一输出地址相符的 所述的错误地址作为所述的选取修补地址。
12. 如权利要求10所述的微码修补方法,其特征在于,所述的第一存储 器是只读存储器,所述的第二存储器是随机存取存储器。
全文摘要
本发明提供一种微码修补系统,包括存储器单元、地址选取单元及捕捉及修补逻辑单元。存储器单元根据选取输出地址被存取。地址选取单元用以提供第一输出地址。捕捉及修补逻辑单元耦接于地址选取单元及记忆单元之间,用以判断第一输出地址是否与至少一错误地址当中任一相符,并且当第一输出地址与错误地址当中的一个相符时,选出一选取修补地址作为第二输出地址,当第一输出地址与错误地址均不相符时,选取第一输出地址作为第二输出地址,其中第二输出地址耦接于存储器单元。本发明提供的微码修补系统,不需要存取需修补、修正或扩展的ROM地址,并且修补存储器的修补地址的产生过程也不会干扰到下一ROM地址的正常产生流程,因而能够节省电力及时间。
文档编号G06F9/22GK101206562SQ20071010442
公开日2008年6月25日 申请日期2007年4月20日 优先权日2006年12月22日
发明者李明鸿 申请人:联发科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1