计算机存储器组织的制作方法

文档序号:6415666阅读:151来源:国知局
专利名称:计算机存储器组织的制作方法
技术领域
本发明涉及计算机,而更具体地涉及将其中的存储区划分成用于缓存目的。应理解术语“计算机”是在广义上用于包括执行数据处理与操作的系统,不论这种处理与操作是否是该系统的主要目的或者是从属或附随某种更专门化的功能,诸如数字电视系统的接收机/解码器。然而,应理解它不限于该系统或该类型的系统,但可更一般地应用于各式各样的计算机系统。这里所用的术语“数字电视系统”包含诸如任何卫星、地面、有线与其它系统。
具体地主要旨在用于广播电视信号的数字传输系统的出现(但不排除卫星电视系统),已开辟了将这些系统用于各种目的的可能性。其中之一为提供与最终用户的交互性。这里所用的术语“数字传输系统”包含用于传输或广播诸如主要是影视或多媒体数字数据的任何传输系统。虽然本发明特别适用于广播数字电视系统,本发明也可应用于多媒体因特网应用等的固定电信网络。
本发明在广播数字电视系统中找到特定的应用,其中将接收的信号传递给接收机/解码器并从而到电视机。这里所用的术语“接收机/解码器”可包含用于接收诸如电视与/或无线电信号等编码或非编码信号的接收机。这一术语也可包含用于解码接收的信号的解码器。这些接收机/解码器的实施例可包含诸如“机顶盒”中的与接收机一体化的用于解码接收的信号的解码器或与物理上分开的接收机配合工作的这种解码器。
接收机/解码器将压缩的MPEG型信号解码成用于电视机的电视信号。接收机/解码器通过接收机/解码器中的接口受遥控器手机控制。接收机/解码器用于处理进入的位流并包含具有导致系统执行各种控制与其它功能的各种应用模块的计算机系统。
这一接收机/解码器可具有耦合在它上面的各种装置,诸如用于用户通过刷授权卡来确认用户授权使用的业务的读卡器;手持式TV接收机控制棒;TV显示器单元;及与银行卡一起使用以允许用户进行家庭银行(事务)功能的第二读卡器。它也可具有耦合在它上面的各种端口,如用于接入因特网及用于进行家庭银行事务的调制解调器、家用计算机等。
提供上述交互性的一种方法是在通过它接收电视信号的接收机/解码器上运行一个应用。希望能以透明的方式使各种应用能与各种物理设备通信。我们的共同未决申请PCT/EP97/02115及PCT/EP97/02116描述了其中一个或多个应用能由接收机/解码器下载并用各设备的设备驱动程序及总体设备管理器与接收机/解码器中诸如并行与串行接口与智能卡读卡器等物理设备通信的系统。
已提出过为接收机/解码器提供与各种不同信号通道接口的能力,诸如调制解调器、串行通道、并行通道、MPEG(压缩与编码视频信号)通道、刷(swipe)卡读卡器等。接收机/解码器包含具有运行时引擎的虚拟机。虚拟机耦合在设备管理器上,后者又通过设备与设备驱动程序耦合在各种通道的物理接口上。
在计算机系统中,尤其是在包含在诸如用于数字电视或无线电的接收机/解码器等一些较大系统中的系统中,存储器容量通常是有限的。这意味着必须组织存储器以便减少系统所需的各种功能所使用的存储器空间。此外,也可能必须减少访问存储器的至少某些部分所需的时间。
本发明具体涉及存储器中缓冲器的提供与组织。
提供缓冲器的传统技术为用动态系统来分配要求的缓冲器。然而,在本文中这一标准系统具有某些缺点。它趋向于导致存储器的分段碎片,并且其速度受开销操作的需求的制约。同时,如果需要缓冲器扩充,可能需要移动存储器块来为扩充建立空间。
从而,本发明提供用于在计算机系统的存储器中的缓冲器区中定义与寻址缓冲器的缓冲器管理系统,包括用于存储多个存储池大小的存储池大小存储装置;用于为各存储池存储缓冲器大小的缓冲器大小存储装置;及用于从中计算所要求的存储池中的所要求的缓冲器的地址的计算装置。
本发明还提供用于在计算机系统的存储器中的多个缓冲器区中定义与寻址缓冲器的缓冲器管理系统,对于各缓冲器区,包括用于存储多个存储池大小的存储池大小存储装置;用于为各存储池存储缓冲器大小的缓冲器大小存储装置;及用于从中计算所要求的存储池中的所要求的缓冲器的地址的计算装置。
为了高效与便于管理,将任何缓冲器区划分成不同固定大小的缓冲器,将同一大小的缓冲器组合到一个缓冲器池中。缓冲器管理系统能根据需要分配缓冲器给应用并避免各需要存储器的应用之间的冲突。
最好包含用于从累积形式确定存储池大小及以这一形式将它们存储在存储池大小存储装置中的装置。可在各存储池起始处定义一个保留区,及提供用于选择直接累积的存储池大小或计算装置的输出的装置。可为所要求的存储池号、所要求的缓冲器号及所要求的字节检验越界值。
最好包含用于检测不同缓冲器区的重叠的装置。
本系统还可包含用于存储缓冲器区的起始地址的装置及用于存储缓冲器区的结束地址的装置,重叠检测装置包括用于从存储装置接收各缓冲器区的起始与结束地址的装置及用于确定一个缓冲器区的起始地址是否大于前一缓冲器区的结束地址的装置。
本发明还延伸到包含上述缓冲器管理系统的接收机/解码器。
该接收机/解码器可包含用于存储多个应用的装置,所述系统配置成定义与寻址缓冲器区中的缓冲器供只分配给一个应用及定义与寻址另一缓冲器区中的缓冲器供分配给其它应用。
此外,本发明提供在计算机系统中的存储器中的缓冲器区中定义与寻址缓冲器的方法,包括下述步骤存储多个存储池大小;为各存储池存储缓冲器大小;以及从中计算所要求的存储池中的所要求的缓冲器的地址。
本发明还延伸到在计算机系统中的存储器中的多个缓冲器区中定义与寻址缓冲器的方法,对于各缓冲器区,包括下述步骤存储多个存储池大小;为各存储池存储缓冲器大小;以及从中计算所要求的存储池中的所要求的缓冲器的地址。
对于各缓冲器区,该方法还可包含下述步骤以累积方式确定存储池大小;以及以该方式存储存储池大小。
对于各缓冲器区该方法还可包括在各存储池的起始处定义一个保留区的步骤。
对于各缓冲器区该方法还可包括选择直接累积的存储池大小或缓冲器池的地址的步骤。
对于各缓冲器区该方法还可包括检验所要求的存储池号、所要求的缓冲器号及所要求的字节的越界值的步骤。
该方法还可包括检测不同缓冲器区的重叠的步骤。如果这样,该方法还可包括下述步骤存储缓冲器区的起始地址;存储缓冲器区的结束地址;以及确定一个缓冲器区的起始地址是否大于前一缓冲器区的结束地址。
可以硬件实现缓冲器管理系统的各种功能,例如在专用的集成电路中;这也提供增强的操作速度。然而,最好至少某些功能是以运行这些应用的处理装置所运行的软件实现;这允许较大的灵活性,需要较少的部件及使系统更容易更新。
下面参照附图以示例方式描述包含实现本发明计算机系统的接收机/解码器,附图中

图1为接收机/解码器的接口的示意图;图2为接收机/解码器的功能框图;图3为RAM存储器与接收机/解码器的其它存储器单元的关系的简图;图4为一部分RAM存储器的组织图;图5示出Set_Buffer_Outline(设定缓冲器轮廓)命令的结构;图6为存储器管理单元的结构图;图7为RAM存储器的组织的修改形式的图;图8为用于图7的存储器组织的存储器管理单元的结构简图;以及图9A至9C示出缓冲器使用与不同客户及设备的关联方式。
为了帮助理解计算机系统,首先简要描述数字卫星接收机/解码器。
参见图1,示意性地描绘要安装实施例的设备驱动器的数字交互式电视系统中使用的接收机/解码器2020或机顶盒。在我们的共同未决申请PCT/EP97/02106-02117中可找到适当的数字交互式电视系统的细节,这里通过引用将它们的公开内容加以结合。为了便于参照,上述说明书中详细描述的部件以上述这些说明书中所用的参照数字一般性地指示。
如在上述说明书中更详细地描述的,参见图1与2,接收机/解码器2020包含若干端口;具体地,MPEG信号流的调谐器4028、串行接口4030、并行接口4032、及两个读卡器4036(一个用于构成本系统的一部分的智能卡,一个用于银行卡)(用于支付、家庭银行事务等)。接收机/解码器还包含到电视信号产生器的所调制解调回的信道4002的接口4034,从而用户能指示爱好等返回到电视信号(节目)产生器。接收机还包括运行时引擎4008、设备管理器4068及用于运行一个或多个应用4056的多个设备4062及设备驱动器4066。
为了本说明书的目的,一个应用为用于控制最好是接收机/解码器2020的高级功能的一段计算机代码。例如,当最终用户将遥控器的焦点定位在电视机2022的屏幕上可见的按钮目标上并按下确认键时,便运行与该按钮关联的指令序列。
交互式应用提出菜单并在最终用户请求下执行命令并提供关于应用的目的的数据。应用可以是存储在接收机/解码器2020的ROM(或快速(FLASH)或其它非易失性存储器)中的驻留应用或广播并下载到接收机/解码器2020的RAM或快速存储器中的应用。
应用是存储在接收机/解码器2020中的存储器单元中并表示为资源文件的。资源文件包括图形对象描述单元文件、变量块单元文件、指令序列文件、应用文件及数据文件,如在上述专利申请中更详细地描述的。
接收机/解码器包含分成RAM存储体、快速存储体及ROM存储体的存储器,但这一物理组织与逻辑组织不同。可进一步将存储器分成与各种接口关联的存储器体。从一个观点来看,可将存储器看成硬件的一部分;从另一观点来看,可将存储器看成支持或包含除了硬件以外所示的整个系统。
可将计算机系统看成是集中在构成虚拟机4007的运行时引擎4008上。一方面(“高级”方面)这是耦合在应用上,而另一方面(“低级”方面)通过下面讨论的各种中间逻辑单元耦合在接收机/解码器硬件4061上。可将接收机/解码器硬件看成包含上面讨论的各种端口(手机2026的接口2030、MPEG流接口4028、串行接口4030、并行接口4032、对读卡器4036的接口及对所调制解调的返回信道4002的接口4034)。
具体参见图2,各种应用4057耦合在虚拟机4007上;一些更常用的应用可或多或少地常驻在系统中,如4057所示,而其它应用则在需要时诸如从MPEG数据流或从其它端口下载到系统中。
除了运行时引擎4008之外,虚拟机4007包含一些驻留的库函数4006,其中包括有工具箱4058。库中包含引擎4008所用的C语言的各种函数。其中包含诸如数据结构的压缩、解压缩或比较等数据操作、画线等。库4006还包含关于接收机/解码器2020中的固件4060的信息,诸如硬件与软件版本号及可利用的RAM空间、以及下载新设备4062时使用的函数。函数可下载到库中,存储在快速或RAM存储器中。
运行时引擎4008耦合在设备管理器4068上,后者耦合在一组设备4064上,后者又耦合在设备驱动器4060上,后者又耦合在端口或接口上。广义上,设备驱动器可看成定义逻辑接口,从而可将两个不同的设备驱动器耦合在一个公共的物理端口上。通常将设备耦合在一个以上设备驱动器上;如果设备耦合在单个设备驱动器上,通常将该设备设计成包含通信所需的全部功能,从而避免需要一个单独的设备驱动器。一些设备可在它们自身之间通信。
如下所述,从设备4064到运行时引擎有3种通信方式利用变量、缓冲器及传递给一组事件队列的事件。
接收机/解码器2020的各功能表示为设备4062。设备可以是本地的或远地的。本地设备4064包含智能卡、SCART连接器信号、调制解码器、串行和并行接口、MPEG视频和音频播放器和MPEG段以及表抽取器。在远程位置上执行的远程设备4066与本地设备不同之处在于必须由系统当局或设计人员而不是由接收机/解码器制造商提供与设计的设备及设备驱动器定义端口及过程。
运行时引擎4008在微处理器及公共应用编程接口的控制下运行。它们装在每一台接收机/解码器2020中,从而从应用的观点来看,所有接收机/解码器2020都是相同的。
引擎4008在接收机/解码器2020上运行应用4056。它执行交互式应用4056及接收来自接收机/解码器2020外部的事件,显示图形与文本,调用服务设备及利用连接在引擎4008上的库4006的函数用于特定计算。
运行时引擎4008为装在各接收机/解码器2020中的可执行代码,并包含用于解释与运行应用的解释程序。引擎4008适用于任何操作系统,其中包含单任务操作系统(诸如MS-DOS)。引擎4008基于进程定序器单元(它们处理诸如按键等各种事件来进行各种动作),并包含其本身的调度程序来管理来自不同硬件接口的事件队列。它还处理图形与文本的显示。进程定序器单元包括一个动作组的集合。各事件依赖于事件的性质使进程定序器单元从其当前动作组转移到另一动作组,并执行新动作组的动作。
引擎4008包括加载与下载应用4056到接收机/解码器存储器2028中的代码加载器。为了保证优化使用,只将必要的代码加载到RAM或快速存储器中。鉴别机构检验下载的数据以防止应用4056的任何改动或任何非授权应用的执行。引擎4008还包括解压缩器。由于为了节省空间及从MPEG-2传送流或通过置入的接收机/解码器模式快速下载而应用代码(中间代码的一种形式)是压缩的,因此在将其加载进RAM中之前必须解压缩该代码。引擎4008还包括解释应用代码以更新各种变量值及确定状态改变的解释程序以及错误检验器。
在使用任何设备4062的服务之前,必须将程序(诸如应用指令序列)说明为“客户”,即对设备4066或设备管理器4068的逻辑访问通路。管理器给予客户在对设备的所有访问中引用的客户号。一个设备4066能具有若干客户,各设备4066的客户数是根据设备4066的类型规定的。用过程“DeviceOpen Channel”将客户引入到设备4066。这一过程分配客户号给客户。过程“DeviceClose Channel”能将客户取出设备管理器4068客户表。
设备管理器4068所提供的对设备4062的访问可以是同步或异步的。对于同步访问,使用过程“DeviceCall”。这是访问立即可得到的数据或不包含等待所要求的应答的函数的手段。对于异步访问,使用过程“DeviceI/O”。这是访问包含等待应答的数据的手段,例如扫描调谐器频率以找到多路复用或从MPEG流中取回表。当请求的结果可使用时,便在引擎的队列中放入事件以通知其到达。另一过程“DeviceEvent”提供管理意外事件的手段。
如上所述,运行时引擎的主循环耦合在各种进程定序器单元上,当主循环遇到适当的事件时,临时将控制传送给进程定序器单元之一。
从而,能知道计算机系统提供在使应用起动与各种设备通信中具有可观的灵活性的平台。
参见图3,接收机/解码器包括耦合在微处理器20上的RAM存储器4022,微处理器20还通过总线21耦合在快速存储器4024、EEPROM存储器4024′及ROM存储器4026上。RAM存储器4022还耦合在DMA(直接存储器存取)单元22上,通过它能将数据(如来自MPEG位流的数据)直接输入RAM存储器中。
RAM存储器4022为256千字节长,并分成三个区域保留供计算机系统的制造商使用的区域24、保留供虚拟机(VM)4007使用的区域25及用于包含诸如缓冲器、应用30、30′、30″、数据等各种信息的用户区域26。计算机系统用允许制造商在设计硬件来实现该系统中可观的自由度的功能说明书来定义;存储区域24实际上用作功能说明书所规定的函数与硬件之间的接口。能将VM4007与微处理器20一起看作运行时引擎(RTE)4008。各种不同的应用可在不同的时间上加载到存储器中。
在VM4007与应用之间及在不同的应用自身之间的通信是必要的。这一通信主要由对VM与各种应用公共的缓冲器处理。
计算机系统中,在用户区26中的缓冲区域32中定义多个缓冲器区。各缓冲器区是用命令定义的,该命令也定义将该缓冲器区分成各个缓冲器。该命令在缓冲器区中定义若干缓冲器池;对于各池,给出该池中缓冲器的大小及池中缓冲器的数目。
命令“Set_Outline_Buffers”分割一个“公共”缓冲器区。任何客户都能分配与释放公共缓冲器区中的缓冲器。命令“Device_Open_Channel_Partition”为一个客户分割一个“专用”缓冲器区供高效存储器使用。专用缓冲器区中的缓冲器只能由作出这一分割的客户分配,但能由任何客户释放。只能定义一个公共缓冲器区,但可同时存在多个专用缓冲器区。最好各客户只能分割至多一个专用缓冲器区。
公共缓冲器区建立后不能由客户修改,但专用缓冲器区可由与之关联的客户根据需求建立与删除。当客户已分割了一个专用缓冲器时,便从该专用缓冲器区中为该客户分配缓冲器,而不是从公共缓冲器区中分配;类似地当分配后该客户请求加锁或重新分配一个缓冲器时,便分别加锁或重新分配专用缓冲器区中的缓冲器。
图5示出用于公共缓冲器区的Set_Buffer_Outline命令的逻辑格式。这包括初始项15定义存储池数NP,后随一组项16、16′等,每一存储池一项,各存储池项包含定义该存储池的存储池大小PS(即池中的缓冲器数)的第一子项17及定义池中的缓冲器的缓冲器大小BS(即缓冲器中的字节数)的第二子项18。
为了方便起见,列出下面使用的这些与其它参数NP存储池数每一存储池-PS池大小(池中缓冲器数)BS缓冲器大小PN存储池号BN缓冲器号(存储池中)ByN字节号(缓冲器中)在用户存储区域26中,缓冲器池是从该区域的开始顺序排列的,如图4中所示。所示的实际布置有3个池,池1包含5个缓冲器,池2包含6个缓冲器而池3包含1个缓冲器。还要注意各缓冲器在其开始处包含16个字节的首标。该首标分成用户可用来作为缓冲器标志等的12个字节部分,及保留供虚拟机4007使用的4个字节部分。
运行时引擎4008实现缓冲器管理器,可将该缓冲器管理器看作构成在总线21与RAM存储器4022的用户区域26之间的寻址路径27。图6示出公共缓冲器区的缓冲器管理器的逻辑组织。首先在微处理器20的控制下用Set_Buffer_Outline命令初始化它,然后用它来寻址任何想要的缓冲器。
参见图6,依次将各池的子项PS与BS馈送给乘法器35,后者形成它们之乘积PS*BS。用值64K(它表示来自硬连线的值发生器42的RAM4022的用户区域26的起始地址)初始化累加器36,并通过在各乘积上增加16的加法器37连续馈送乘积PS*BS,该16表示在各池起始处的保留部分的大小。因此累加器36依次地包含各连续的缓冲器池的起始地址。将这些池起始地址馈送给累积地址寄存器38,将它们顺序存储在其中。同时在初始化期间,将池数NP存储在池数寄存器39中,将池大小存储在池大小寄存器40中并将缓冲器大小BS以相同的顺序存储在缓冲器大小寄存器41中。
初始化以后,便能寻址缓冲器3。为了寻址一个缓冲器,用想要的池的池号PN、该池中想要的缓冲器的缓冲器号BN及该缓冲器内想要的字节的字节号ByN定义想要的缓冲器。
池号PN用来为该池从累积寄存器38与缓冲器大小寄存器40中选择适当的项。将固定大小的缓冲器大小BS馈送给乘法器45,在其中将其乘以缓冲器号BN。将得出的积馈送给增量器46,增量器在该积上加上16。将累积寄存器38的输出馈送给加法器47,在其中将其加上字节号ByN。将增量器46的输出馈送给加法器48,在其中将其加在加法器47的输出上。加法器48的输出作为想要的地址传递通过多路复用器49、这便是想要的池中的想要的缓冲器的想要的字节。
缓冲器管理器还包含检错电路。将池号PN与来自寄存器39的池数NP一起馈送给比较器53,以检验所选择的池号是否不大于池数;即检验所选择的池是否在缓冲器区内。将缓冲器号BN与池大小寄存器40中选择的项的输出一起馈送给比较器54,以检验所选择的缓冲器号是否不大于所选择的池中的缓冲器数;即检验所选择的缓冲器是否在选择的池内。将选择的字节号与所选择的池中的缓冲器的大小一起馈送给比较器55,以检验想要的字节号是否不大于缓冲器的长度;即检验所选择的字节是否在所选择的缓冲器内。这些比较器都馈送出一个共同的输出,如果任何一个检验失败,便生成一个出错信号ERR。
到此为止的描述都假定在寻址(公共缓冲器区中的)缓冲器。然而,可能想要寻址缓冲器的16字节首标。这两种选项之间的选择是受信号N/C控制的,它在正常缓冲器访问与为了方便称作缓冲器控制操作之间进行选择。对于正常访问,选择缓冲器;对于控制操作只选择缓冲器的首标。
将N/C信号馈送给多路复用器49。对于正常缓冲器访问,这一信号选择加法器48的输出,如上所述。然而,对于在缓冲器的首标上的控制操作,多路复用器选择加法器47的直接输出作为替代。由于这一来自累积寄存器38的路径并不通过增量器46,从而选择了在首标中的所想要的字节而不是在该首标后面的缓冲器中的字节。
对于缓冲器上的控制操作,必须禁止比较器55。因此,信号N/C为正常缓冲器访问起动这一比较器而为控制操作禁止该比较器。另一比较器56也馈以字节号ByN与首标中的字节数(即16),并被信号N/C启动用于系统访问。这一比较器检验想要的字节号是否不大于16;即它检验所选择的字节是否在所选择的缓冲器起始处的保留区域中。明显地,这一检验能细化到分辨对可由用户用作缓冲器标志等的12字节部分的访问与为使用对RTE保留的4个字节部分的访问。
如果愿意,Set_Buffer_Outline命令也可包含定义用户存储区域26的结束的用户存储器结束参数14,如图5中所示。可将这一最后一项存储在适当的寄存器中,并可用来检验缓冲区域并不延伸超出用户存储区域26的结束处。(这一般是极不可能的,由于必须为应用30、30′、30″等留出空间。然而,如果将系统设计成使缓冲器区可位于用户区域中间某处而不在上述其起始处,这便可能发生)。
原则上,能在任何时间上用Set_Buffer_Outline命令来初始化公共缓冲器区。然而,重新初始化缓冲器区将实际上导致丢失已在缓冲器中的所有(或接近所有)信息,因此通常只在系统初始化时执行Set_Buffer_Outline命令。
在至此为止所描述的系统中,缓冲区域32包含图4中所示的公共缓冲器池集合。图7与8示出如何在接收机/解码器中实现专用缓冲器区。如上所述,公共缓冲器区是用若干专用缓冲器区60、60′、60″等补充的。将各专用缓冲器区分配给客户;该客户建立专用缓冲器区,并在希望时擦除它。从而在某种意义上专用缓冲器区是建立它的客户的财产。然而其它客户能访问它以向它及从拥有它的客户传递信息。
缓冲器管理系统可允许专用缓冲器区自由地定位在用户存储区域26内。然而它们最好全部包含在与包含客户的存储区域分离的存储区域32A中,如图7中所示。这简化了潜在的存储区域使用冲突的检测。
专用缓冲器区60、60′、60″等与公共缓冲器区具有相同的结构,并且用类似于图5中所示的Set_Buffer_Outline命令的Device_Open_Channel_Partition命令定义。Device_Open_Channel_Partition命令包含两个附加字段第一附加字段包含生成该命令的客户的标识符,而第二个包含缓冲器区的起点的存储器地址。为了方便省略存储器结束字段(示出在图5中14上)。
图8示出用于专用缓冲器区的缓冲器管理器27的逻辑组织。图6的电路示出为块65。此外,存在一组其它的块66,每一个应用一个块。这些块中每一个基本上与块65相同;在块66的各个中,用寄存器42A来存储对应的应用的专用缓冲器区的初始地址。(如上所述,Device_Open_Channel_Partition命令格式包含缓冲器的初始地址的字段。)块65与66全都馈入多路复用器67,后者用来选择公共缓冲器区或专用缓冲器区中想要的一个。
可将来自单元65与66的出错信号组合在一起。此外,还设置了出错单元68用于检测不同缓冲器区之间的冲突。
从寄存器42与42A中可直接获得缓冲器区的起始地址。为了结束地址,略为修改图6的电路及其初始化。累积地址寄存器38包含缓冲器区中各种池的起始地址。将这寄存器扩展一个位置,如38A处所示。同时,初始化过程在生成缓冲器区的最后的池的起始地址后继续进行,将最后一个池的大小与其缓冲器大小相乘,并将该积累加在累加器36中及将结果传送给寄存器扩展38A。因此寄存器扩展38A包含缓冲器区的结束地址。
将各缓冲器区的起始与结束地址馈送给出错单元68,后者处理它们来判定是否存在任何重叠。这可以例如通过顺序排列缓冲器起始地址,并检验各起始地址是否大于前一缓冲器区的结束地址而进行。当要生成新缓冲器区时,也可用这一单元来搜索适当的存储区,寻找两个现存的缓冲器区之间正好大于想要的新缓冲器区的间隙。
这里实际上存在小的差异。寄存器扩展38A中的地址实际上并非真正的缓冲器结束地址而是紧接在缓冲器区结尾后面的地址。然而,这一差异是无足轻重的,并可例如通过在单元65及66与出错单元68之间将结束地址减少一位来解决。
图9A至9C示出将缓冲器使用与不同客户及设备关联的方式。图9A示出一个初始状态,其中管理器已用各种进程(命令)分配5个缓冲器BF1至BF5。
客户CL1用分配命令ALLOC分配(建立)未加锁的缓冲器BF1。
客户CL1还分配缓冲器BF2。设备DV1当前正在通过命令I/O将这一缓冲器用于尚未完成的I/O操作;在完成I/O操作之前它不接受解除分配命令(FREE)。
缓冲器BF3已被客户CL1加锁。这一缓冲器的原始分配是未知的;它可能已被客户CL1、某一其它客户、客户CL1寻址的设备或某一其它客户寻址的设备所分配。
缓冲器BF4已被设备DV1分配成与寻址到客户CL1的意外事件关联。这一事件尚未被发送。
缓冲器BF5被客户CL1分配用于正在以设备DV2执行的同步访问。这一缓冲器也能由设备分配。只能在这一操作后该应用才能继续操作。
图9B示出已发生涉及缓冲器BF5的同步访问之后但在涉及缓冲器BF1的I/O异步访问结束之前已将客户CL1从设备1的表中去掉之后的情况。
缓冲器BF1与BF2继续存在;它们都不链接在设备DV1上。
缓冲器BF3继续存在因为它是加锁的。然而,客户CL1或另一客户能将其解除分配。
缓冲器BF4是寻址到客户CL1的设备DV1分配的,因此已解除分配,即已停止存在。即使意外事件尚未发送(即放在应用引擎的队列中)这也是真实的;如果事件已发送这也是真实的,除非这一缓冲器已被来自设备DV1的LOCK命令加锁。
客户CL1使用之后尚未解除分配缓冲器BF5。
图9C示出客户CL1已用DeviceClose Channel命令将自己从设备管理器表上消除之后的情况。
缓冲器BF1、BF2与BF5已被设备管理器解除分配(删除)以清除存储器。
缓冲器BF3尚未解除分配,因为它是加锁的。它将被另一客户解除分配。
上述各种功能的实现及它们在硬件与软件之间的分布的精确细节是实现者的选择问题,不再详细描述。然而,注意能执行所要求的操作的专用集成电路是在市场上可购买的或能容易地设计的,并且它们可用作硬件加速器的基础,或者最好修改成产生专用硬件加速器来实现各种需要的操作,借此减少运行软件所需的处理能力。然而,如果能获得足够的处理能力,可将所需操作实现在软件中。
模块与其它部件已用各部件提供的特征与功能连同可选的与较佳的特征加以描述。用给出的信息及提供的说明,熟悉本技术的人员对这些特征的实际实现应是容易理解的,而将精确的细节留给实现者。作为示例,一些模块可在软件中实现,最好用C编程语言编写及最好编译成在用于运行应用的处理器上运行;然而,某些部分可在一个单独的处理器上运行,并且某些或全部部件可用专用硬件实现。
上述模块与部件只是示例性的,本发明可用多种方式实现,具体地,某些部件可与执行类似功能的其它部件组合,或在简化的实现中可省略某些部件。各功能的硬件与软件实现可在部件之间或单一部件内自由混合。
容易理解,硬件、计算机软件等所执行的功能是在电气等信号上执行的。可将软件实现存储在ROM中,或插入快速存储器中。
为了总结本发明的较佳实施例,在计算机系统中的存储器中,缓冲器管理系统定义多个缓冲器区。命令定义公共缓冲器区中的缓冲器池的数目NP,并为各池定义该池中的缓冲器数的池大小PS及该池中的缓冲器大小BS。初始化缓冲器管理系统,为各缓冲器区存储缓冲器大小以及累积与存储池的大小。为了寻址缓冲器,缓冲器管理系统利用存储的信息从想要的池与缓冲器号确定缓冲器的起始地址。缓冲器管理系统还在各缓冲器开始处定义一个首标。也能提供越界条件的检验。能够类似地定义由各自的不同客户分配的各种专用缓冲器区。
应理解上面纯粹用示例方式描述了本发明,在本发明的范围内能作出细节上的修改。说明书及(适当时)权利要求与附图中所公开的各特征可以独立地或以任何适当的组合提供。
权利要求
1.一种用于定义与寻址计算机系统中的存储器中的缓冲器区中的缓冲器的缓冲器管理系统,包括用于存储多个池大小的池大小存储装置;用于为各池存储一个缓冲器大小的缓冲器大小存储装置;以及用于从中计算想要的池中的想要的缓冲器的地址的计算装置。
2.一种用于定义与寻址计算机系统中的存储器中的多个缓冲器区中的缓冲器的缓冲器管理系统,对于各缓冲器区,包括用于存储多个池大小的池大小存储装置;用于为各池存储一个缓冲器大小的缓冲器大小存储装置;以及用于从中计算想要的池中的想要的缓冲器的地址的计算装置。
3.按照权利要求2的系统,包括用于检测不同缓冲器区的重叠的装置。
4.按照权利要求3的系统,包括用于存储缓冲器区起始地址的装置及用于存储缓冲器区的结束地址的装置,重叠检测装置包括用于从存储装置接收各缓冲器区的起始与结束地址的装置及用于判定一个缓冲器区的起始地址是否大于前一缓冲器区的结束地址的装置。
5.按照前面任一权利要求的系统,对于该或各缓冲器区,包含用于以累积方式确定池大小并以该方式将它们存储在池大小存储装置中的装置。
6.按照前面任一权利要求的系统,对于该或各缓冲器区,包含用于在各池的开始处定义一个保留区域的装置。
7.按照权利要求5与6的系统,对于该或各缓冲器区,包含用于选择直接累积的池大小或计算装置的输出的装置。
8.按照前面任一权利要求的系统,对于该或各缓冲器区包含用于检验想要的池号、想要的存储器号及想要的字节的越界值的装置。
9.一种包含按照前面任一权利要求的缓冲器管理系统的接收机/解码器。
10.按照权利要求9的接收机/解码器,包含用于存储多个应用的装置,所述系统布置成定义与寻址缓冲器区中的缓冲器供只分配给一个应用及定义与寻址另一缓冲器区中的缓冲器供分配给其它应用。
11.一种定义与寻址计算机系统中的存储器中的缓冲器区中的缓冲器的方法,包括下述步骤存储多个池大小;为各池存储一个缓冲器大小;以及从中计算想要的池中的想要的缓冲器的地址。
12.一种定义与寻址计算机系统中的存储器中的多个缓冲器区中的缓冲器的方法,对于各缓冲器区,包括下述步骤存储多个池大小;为各池存储一个缓冲器大小;以及从中计算想要的池中的想要的缓冲器的地址。
13.按照权利要求12的方法,还包括检测不同缓冲器区的重叠的步骤。
14.按照权利要求13的方法,包括下述步骤存储缓冲器区的起始地址;存储缓冲器区的结束地址;以及判定一个缓冲器区的起始地址是否大于前一缓冲器区的结束地址。
15.按照权利要求11至14中任何一项的方法,对于该或各缓冲器区,还包括下述步骤以累积方式确定池大小;以及以该方式存储池大小。
16.按照权利要求11至15中任何一项的方法,对于该或各缓冲器区,还包括在各池的开始处定义一个保留区的步骤。
17.按照权利要求15与16的方法,对于该或各缓冲器区,还包括选择直接累积的池大小或缓冲器池的地址的步骤。
18.按照权利要求11至17中任何一项的方法,对于该或各缓冲器区,还包括检验想要的池号、想要的缓冲器号及想要的字节的越界值的步骤。
19.一种基本上如这里参照附图描述及在其中示出的缓冲器管理系统。
20.一种基本上如这里参照附图描述的定义与寻址计算机系统中的存储器中的缓冲器区中的缓冲区的方法。
全文摘要
在计算机系统中的存储器中,缓冲器管理系统定义多个缓冲器区。命令定义公共缓冲器区中的NP个缓冲器池。并为各池定义该池中的缓冲器数的池大小PS及该池中的缓冲器的大小BS。将缓冲器管理系统初始化为各缓冲器区存储缓冲器大小及累积与存储池大小。为了寻址缓冲器,缓冲器管理系统利用存储的信息从想要的池与缓冲器号确定缓冲器的起始地址。缓冲器管理系统还在各缓冲器的开始处定义一个首标。还能提供越界条件检验。能够类似地定义分配给各自的不同客户的各种专用缓冲器区。
文档编号G06FGK1255212SQ98804985
公开日2000年5月31日 申请日期1998年3月19日 优先权日1997年3月21日
发明者J·梅里克, J-C·萨尔法蒂, P·勒图尔纳, J-B·G·M·伯奎, H·T·廖 申请人:卡纳尔股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1