可执行外部程序码的集成电路和方法

文档序号:6331445阅读:209来源:国知局
专利名称:可执行外部程序码的集成电路和方法
技术领域
本发明涉及一种集成电路及其运作方法,尤其是涉及一种可执行外部程序码的集成电路和其运作方法。
背景技术
在设计集成电路时,研发人员常会使用处理器(processor)配合特定功能的电路设计,以便在产品效能、研发时程和产品应用的弹性等方面达成需求。处理器也常被称为微处理器(microprocessor)、控制器(controller)、微控制器(micro controller)等。特定功能的电路设计因为只需执行某些特定功能,因此效能通常较佳,但电路设计的研发需要较长的时间,也较难因应不同的产品应用而更动电路设计。处理器虽然通常效能略差,但能配合研发人员所撰写的软件或固件(firmware)而能执行较多功能,因此可缩短研发时间, 并且提供较大的弹性。当运作时,处理器读取于非挥发性(non-volatile)记忆体的程序码,以执行所需的功能。非挥发性记忆体常内建于集成电路内,例如,以只读记忆体(read only memory, ROM)、快闪记忆体(flash memory)等方式实现,并且于集成电路制造时写入程序码。若集成电路制造完成后,需要新增或修改程序码以使集成电路达成所需的功能,则可能需要藉由修改只读记忆体的内容,并修改或重新制造光罩后,才能制造具有经修改的程序码的集成电路。虽然修改只读记忆体的内容比起修改电路设计已经较为容易,但仍需耗费许多资金和时间。因此,有些修改方式藉由将新增或修改过的程序码储存于另一个外部的非挥发性记忆体,当集成电路运作时,不但会读取内部的非挥发性记忆体内的程序码,并且会读取外部的非挥发性记忆体的程序码。如此一来,研发人员便能以较弹性且低成本的方式来新增或修改程序码,并且上下游协力厂商的研发人员也能以这种方式轻易的新增或修改集成电路的功能,而能发展出更多应用。此外,有些处理器支援可重复利用记忆体(data overlay或share memory)的功能,让程序码中的各个例程(routine)能够共用相同的随机记忆体(random access memory, RAM),而能够节省所使用的随机存取记忆体。例如,A例程需要在随机记忆体使用 30个记忆单元存取A例程所需的数据(data或variable),B例程需要在随机记忆体使用 20个记忆单元存取B例程所需的数据,若此二例程不会同时执行,则可让A例程和B例程在随机记忆体上共用部份或全部的记忆单元。例程也有被称为子例程(sub-routine)、程序 (program)、子程序(sub-program)、流程(process)等名称,而记忆单元可依设计考量采用位元组(byte)、字组(word)或其他合适的记忆体容量。然而,采用可重复利用记忆体功能的处理器,需要更仔细的控管各个例程的执行和随机存取记忆体的使用,以免例程由随机存取记忆体中存取了错误的数据,而产生了错误的输出。例如,研发人员欲以储存于外部只读记忆体的C例程取代A例程,C例程需要在随机记忆体上使用40个记忆体单元。假设原先A例程使用第N个至第N+四个记忆体单元存取数据,而另一 D例程使用第N+30个至第N+45个记忆体单元存取数据。若直接使用C例程取代A例程,而让C例程使用第N个至第N+39个记忆体单元存取数据,则C例程和D例程都可能因此存取到错误的数据,而使C例程以及D例程无法执行正确的功能。因此,如何使处理器、随机存取记忆体、集成电路内部和外部非挥发性记忆体正常运作,例如,载入正确的程序码和随机记忆体的使用控管等,并且让研发人员能更易于新增或修改程序码,是长期以来一直需要解决的问题。

发明内容
因此,需要一种执行外部程序码的装置与方法以解决上述的问题。为了解决上述问题,本说明书提供一种可执行外部程序码的集成电路,其包含有一处理器;一只读记忆体,用以储存一第一例程和一第二例程的程序码;以及一随机存取记忆体,具有一第一记忆体区块和一第二记忆体区块;其中该处理器执行该第一例程的程序码,并利用该第一记忆体区块的复数个第一记忆单元存取该第一例程的一数据,该处理器执行该第二例程的程序码,并利用该第一区块的复数个第二记忆单元存取该第二例程的一数据,该第一记忆单元与该第二记忆单元至少有一个记忆单元相同,且该处理器自一外部只读记忆体读取一第三例程的程序码,并于该第二区块存取该第三例程的一数据。本说明书另提供一种使用一集成电路执行外部程序码的方法,其包含有使用一处理器执行储存于一第一只读记忆体的一第一例程的程序码,将该第一例程的一数据储存于一随机存取记忆体的一第一区块的复数个第一记忆单元;使用该处理器执行储存于一第一只读记忆体的一第二例程的程序码,将该第二例程的一数据储存于该随机存取记忆体的该第一区块的复数个第二记忆单元,并且该第二记忆单元的至少其中之一和该第一记忆单元的至少其中之一为相同的记忆单元;使用该处理器执行储存于一第二只读记忆体的一第三例程的程序码,将该第三例程的一数据储存于该随机存取记忆体的该第二区块;其中该处理器、该第一只读记忆体和该随机存取记忆体设置于该集成电路内部,而该第二只读记忆体设置于该集成电路外部。上述实施例的优点之一在于能使集成电路的研发更有弹性,并且降低所需的研发成本和时间。



170180220、240、260
导线
非挥发性记忆体记忆体区块
具体实施例方式以下将配合相关图式来说明本发明的实施例。在这些图式中,相同的标号表示相同或类似的元件或流程步骤。在说明书及后续的权利要求当中使用了某些词汇来指称特定的元件。本领域技术人员应可理解,可能会有不同的名词用来称呼同样的元件。本说明书及后续的权利要求并不以名称的差异作为区分元件的方式,而是以元件在功能上的差异作为区分的基准。在通篇说明书及后续的权项当中所提及的「包含」为一开放式的用语,故应解释成「包含但不限定于...」。另外,「耦接」一词包含任何直接及间接的连接手段。因此, 若文中描述第一装置耦接于第二装置,则代表第一装置可直接连接(包含通过电性连接、 有线/无线传输、或光学传输等讯号连接方式)于第二装置,或通过其他装置或连接手段间接的电性或讯号连接至该第二装置。图1为本发明一实施例的集成电路系统100简化后的功能方块图。集成电路系统 100包含集成电路110、导线170和非挥发性记忆体180。集成电路100包含处理器120、非挥发性记忆体130和随机存取记忆体140。处理器120可以采用任何合适形式的处理器,例如,精简指令集(reduced instruction set computing, RISC)处理器、复杂指令集(complex instruction set computing, CISC)处理器或其他架构的处理器,并且具有可重复利用记忆体的功能。例如,处理器120可使用 M8051系列处理器或80390系列处理器。非挥发性记忆体130可以采用快闪记忆体、可抹写式(erasable)的只读记忆体或不可抹写式的只读记忆体等,用以储存处理器120可执行的程序码。该程序码可以是各种程序语言的原始码(source code)、汇编码(assembly code)或可执行码等。随机存取记忆体140可以采用静态随机存取记忆体(static RAM, SRAM)、动态随机存取记忆体(dynamic RAM, DRAM)或其他形式的随机存取记忆体。处理器120执行各个例程时,会使用随机存取记忆体140以存取所需的数据。非挥发性记忆体180可以采用快闪记忆体、可抹写式的只读记忆体、不可抹写式的只读记忆体、另一个集成电路中的非挥发性记忆体、或任何合适的非挥发性记忆装置。集成电路110和非挥发性记忆体180可设置于同一电路板(图中未示),或者分别设置于不同的电路板(图中未示)。相较于设置于集成电路110内部的非挥发性记忆体130,非挥发性记忆体180为设置于集成电路110外部的元件,并且能以各种方式实现。例如,集成电路110和非挥发性记忆体180可分别为经封装的晶片,或者也可以用系统级封装(system in package, SIP)等方式,将集成电路110和非挥发性记忆体180的未封装芯片(die)封装为单一晶片。集成电路110制造完成后,可将欲新增或修改的程序码储存于外部的非挥发性记忆体180,而可避免修改集成电路110的非挥发性记忆体130。因此,处理器120可执行非挥发性记忆体130的程序码,并且配合非挥发性记忆体180的程序码,而能新增、减少、更新或修改集成电路110的功能。
集成电路110和非挥发性记忆体180间以导线170相耦接,并采用自订或标准的协议传输信号。图ι中仅绘制一条导线170示意,实作上,导线170可为一条或多条的导线, 以于集成电路110和非挥发性记忆体180间传输信号。图2为图1中随机存取记忆体140的记忆体区块划分的一实施例示意图。随机存取记忆体140包含有记忆体区块220、240和沈0。图2中记忆体区块的位置和数目仅为示意,并非用以表示记忆体区块在随机存取记忆体140内的物理位置及数量。处理器120可藉由分页(PAGED)或是其他记忆体存取机制,能而对记忆体区块快速的存取,并且可能有数种不同的存取速度。因此,记忆体区块220、240和260可以分别是处理器120可以快速存取的记忆体区块,或处理器120存取较慢的记忆体区块。例如,80390 系列处理器中,BDATA、IDATA和PDATA等记忆体区块为处理器可快速存取的记忆体区块,相较而言,处理器存取XDATA等记忆体区块的速度则较慢。以下将以图3和图4搭配图1和图2来进一步说明集成电路系统100的运作方式。 图3为本发明使用集成电路110执行外部程序码的方法的一实施例的流程图300,在此实施例中,集成电路系统100仅执行储存于非挥发性记忆体130内的程序码。在流程310中,处理器120执行储存于非挥发性记忆体130的A例程的程序码,并使用记忆体区块220存取A例程所需的数据。在流程320中,处理器120执行储存于非挥发性记忆体130的B例程的程序码,并使用记忆体区块220存取B例程所需的数据。在此实施例中,处理器120不会同时执行A 例程和B例程,因此A例程和B例程在记忆体区块220中共用了部份或全部的记忆体单元。在流程330中,处理器120执行储存于非挥发性记忆体130的C例程的程序码,并使用记忆体区块220存取C例程所需的数据。C例程设置为可被非挥发性记忆体180的程序码所取代,此外,也可依据所需的记忆体单元大小和存取速度等条件,设置为让C例程使用记忆体区块240或260存取C例程所需的数据。在图3的实施例中,也可依照不同的设计考量,将A例程和B例程设置为使用记忆体区块240或260存取所需的数据。而记忆体区块220、240或沈0,分别可以是处理器120 可以快速存取的记忆体区块,或处理器120存取较慢的记忆体区块。图4为本发明使用集成电路110执行外部程序码的方法的另一实施例的流程图 400,与图3的实施例类似,但在此实施例中,处理器120使用非挥发性记忆体180的程序码取代部份非挥发性记忆体130的程序码。在流程410中,处理器120执行储存于非挥发性记忆体130的A例程的程序码,并使用记忆体区块220存取A例程所需的数据。在流程420中,处理器120执行储存于非挥发性记忆体130的B例程的程序码,并使用记忆体区块220存取B例程所需的数据。在此实施例中,处理器120不会同时执行A 例程和B例程,因此A例程和B例程在记忆体区块220中共用了部份或全部的记忆体单元。在流程430中,处理器120执行储存于非挥发性记忆体180的D例程的程序码,用以代替非挥发性记忆体130的C例程。此时,选用非C例程所使用的记忆体区块作为存取D 例程所需数据的记忆体区块,如此就可避免因C例程和D例程所使用的记忆体区块的大小不同而产生的数据存取错误。例如,图3的C例程使用记忆体区块220存取所需的数据,故处理器120在流程430中可选用记忆体区块240或260作为存取D例程所需数据的记忆体
7区块。在一些实施例中,D例程仅于记忆体区块中储存区域数据(local data或local variable) 0区域数据一词在此是指仅于D例程中为有效的数据。在另一些实施例中,D例程可于记忆体区块中存取全域数据(glcAal data或global variable),全域数据即在D例程和其他例程中皆为有效的数据。一般情况下,全域数据没有初始值,而是由处理器120自其他记忆体区块中将部分数值复制过来做为全域数据的初始值。例如,以上述的80390处理器而言,可设置C例程使用DATA、BDATA或IDATA记忆体区块存取区域数据,而将D例程设置为使用PDATA及/或XDATA记忆体区块存取区域数据。在另一些实施例中,可将D例程设置为使用XDATA记忆体区块存取全域数据,且全域数据不设置初始值,而是由处理器120自其他记忆体区块中将某些数值复制过来做为全域数据的初始值。在一些实施例中,D例程和其他储存于非挥发性记忆体180的例程会呼叫非挥发性记忆体130的E例程,若E例程会因为D例程或其他例程而改变在记忆体区块中所存取的记忆体单元,将会使E例程产生错误。因此,可使用函数或位移等方式,使E例程执行或被其他例程呼叫时,使用记忆体区块中固定的记忆体单元来存取所需的数据。以上所述仅为本发明的较佳实施例,凡依本发明权利要求所做的均等变化与修饰,皆应属本发明的涵盖范围。
权利要求
1.一种可执行外部程序码的集成电路,其包含有一处理器;一只读记忆体,用以储存一第一例程和一第二例程的程序码;以及一随机存取记忆体,具有一第一记忆体区块和一第二记忆体区块;其中该处理器执行该第一例程的程序码,并利用该第一记忆体区块的复数个第一记忆单元存取该第一例程的一数据,该处理器执行该第二例程的程序码,并利用该第一区块的复数个第二记忆单元存取该第二例程的一数据,该第一记忆单元与该第二记忆单元至少有一个记忆单元相同,且该处理器自一外部只读记忆体读取一第三例程的程序码,并于该第二区块存取该第三例程的一数据。
2.如权利要求1所述的集成电路,其中该处理器存取该第一记忆体区块的时间少于或等于存取该第二记忆体区块的时间。
3.如权利要求2所述的集成电路,其中该处理器仅于该第二区块存取该第三例程的一区域数据。
4.如权利要求2所述的集成电路,其中该处理器仅于该第二区块存取该第三例程的一全域数据,且该处理器自该第一区块或一第三区块复制一数值作为该全域数据的初始值。
5.如权利要求1所述的集成电路,其中该处理器存取该第二记忆体区块的时间少于存取该第一记忆体区块的时间。
6.如权利要求5所述的集成电路,其中该处理器仅于该第二区块存取该第三例程的一区域数据。
7.如权利要求1所述的集成电路,其中该第三例程另呼叫一第四例程,该第四例程使用该随机存取记忆体的复数个固定的记忆体单元存取数据。
8.一种使用一集成电路执行外部程序码的方法,其包含有使用一处理器执行储存于一第一只读记忆体的一第一例程的程序码,将该第一例程的一数据储存于一随机存取记忆体的一第一区块的复数个第一记忆单元;使用该处理器执行储存于该第一只读记忆体的一第二例程的程序码,将该第二例程的一数据储存于该随机存取记忆体的该第一区块的复数个第二记忆单元,并且该第二记忆单元的至少其中之一和该第一记忆单元的至少其中之一为相同的记忆单元;使用该处理器执行储存于一第二只读记忆体的一第三例程的程序码,将该第三例程的一数据储存于该随机存取记忆体的该第二区块;其中该处理器、该第一只读记忆体和该随机存取记忆体设置于该集成电路内部,而该第二只读记忆体设置于该集成电路外部。
9.如权利要求8所述的方法,其中该处理器存取该第一记忆体区块的时间少于或等于存取该第二记忆体区块的时间。
10.如权利要求9所述的方法,其中该处理器仅于该第二区块存取该第三例程的一区域数据。
11.如权利要求9所述的方法,其中该处理器仅于该第二区块存取该第三例程的一全域数据,且该处理器自该第一区块或一第三区块复制一数值作为该全域数据的初始值。
12.如权利要求8所述的方法,其中该处理器存取该第二记忆体区块的时间少于存取该第一记忆体区块的时间。
13.如权利要求12所述的方法,其中该处理器仅于该第二区块存取该第三例程的一区域数据。
14.如权利要求8所述的方法,其中该第三例程另呼叫一第四例程,该第四例程使用该随机存取记忆体的复数个固定的记忆体单元存取数据。
全文摘要
本发明提出一种可执行外部程序码的集成电路,其包含有一处理器;一只读记忆体,用以储存第一例程和第二例程的程序码;以及一随机存取记忆体,具有第一记忆体区块和第二记忆体区块。处理器执行第一例程的程序码,并利用第一记忆体区块的复数个第一记忆单元存取第一例程的数据。处理器执行第二例程的程序码,并利用第一区块的复数个第二记忆单元存取第二例程的数据,第一记忆单元与第二记忆单元至少有一个记忆单元相同。处理器执行外部只读记忆体的第三例程的程序码,并于第二区块存取第三例程的数据。本发明还提出一种使用该集成电路执行外部程序码的方法。
文档编号G06F9/34GK102385503SQ20101027231
公开日2012年3月21日 申请日期2010年9月1日 优先权日2010年9月1日
发明者林政良 申请人:络达科技股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1