管理打印机分组通信数据的通信缓冲器的方法和装置的制作方法

文档序号:6414133阅读:205来源:国知局
专利名称:管理打印机分组通信数据的通信缓冲器的方法和装置的制作方法
技术领域
本发明一般涉及通信设备,尤其针对一种包含红外通信端口的打印机类型。本发明明确公开一种打印机,该打印机动态分配一组发送和接收缓冲器,用以通过通信链路接收数据。
当通信系统通过通信链路接收到数据时,它们一般使用一个或多个缓冲器以存储这些数据。在大多数情况下,进入缓冲器的信息的到达速度与消费这些数据的速度相去甚远。此外,如果处理系统实际上是串行的,在初始数据通过通信链路到达时,该处理系统通常忙于执行某个其它的任务,因而无法直接从那个任务跳转到处理数据的新任务。因此,某个传统的缓冲器可以以一种实际自治的方式将数据存储在缓冲器中,无需主系统处理器的帮助,从而在处理器能够正确处理该数据之前,不会丢失任何数据部分。
在美国专利,例如第5179662号美国专利(由Corrigan申请)中已公开了某种通信缓冲器处理系统,在该专利中公开的系统使用优化I/O缓冲器将数据写入辅助存储器,或使用双缓冲器方案从中读出数据。在该专利中,术语辅助存储器是指磁盘或光盘,众所周知,与其存储介质之间的数据传送较慢。在现有技术中,大多数计算机使用缓冲器对与辅助存储器之间的交互数据进行“分页”。这些缓冲器位于较快的存储区,例如RAM。在Corrigan专利中,当用户希望将数据发送给辅助存储器时,第一缓冲器填满数据,其内容异步写入辅助存储设备。第二缓冲器不需要等待异步写入完成,即可填充数据,在它被填满之后,其内容被异步写入辅助存储设备。如果第一缓冲器此时没有完成其写操作,则确定缓冲器容量过小,这两个缓冲器的容量都需要增大。增量执行这种容量上的增加,并继续到计算机不需要同步等待一个缓冲器完成其写操作之后,才可以在该缓冲器中重新填充新数据。另一方面,缓冲器容量也可能过大,如果在第二缓冲器的填充程度超过某个预定门限百分比之前,第一缓冲器已完成其写操作,则可以确定出现了这种情况。这样的话,两个缓冲器的容量都需要减小。理想情况下,在第二缓冲器的填充程度超过预定门限百分比,例如50%时,第一缓冲器应当完成其写操作。
另一个专利,第5289470号美国专利(由Chang申请)公开了一种在联网设备中存储数据分组的存储器缓冲系统。该联网设备具有多个缓冲器,每个缓冲器组具有多个特定容量的缓冲器。例如,缓冲器组1可能具有8个缓冲器,其容量都相同。缓冲器组2可能具有6个缓冲器,其容量也相同,但是,组2中的缓冲器大于组1中的缓冲器。在本专利所说明的例子中,存在着5个不同的缓冲器组,随着指定组号的增大,缓冲器组的容量也逐渐增大。当联网设备接收到数据分组时,首先从缓冲器组1分配一个缓冲器。如果分组长度没有超过所分配的缓冲器容量,则整个分组都存储在该缓冲器中。否则,该数据分组的一部分填满了第一缓冲器,从组2中分配另一个缓冲器以存储该分组的其余部分。如果该分组仍无法完全装入从组1和组2中分配的组合缓冲器,则从组3中分配一个缓冲器以存储该分组。继续递增分配更大的缓冲器,直至整个数据分组存储在一个或多个缓冲器。
另一个专利,第5303347号美国专利(由Gagne申请)公开了一种网络数据接收设备,该设备将具有不同属性的信息分组传送到主机存储器的缓冲器中。该存储器专用于某个特定属性值或属性值范围,并以接收环的形式使用多个共享数据结构,每一个接收环与专用于某个特定分组属性的特定值范围的存储缓冲器相关联。到来的分组被导入其属性与该分组的属性相同的缓冲器。可以用以将分组导入特定类型缓冲器的某些属性包括(1)分组长度,(2)网络用户标识,(3)分组长度和用户ID的组合,以及(4)其它类型的属性,例如源点ID和数据类型。
第5566315号美国专利(由Milillo申请)公开了一种计算机中的高速缓冲器存储器空间,通过调整其上下门限,可以对它进行动态控制。上下门限的调整基于响应于I/O请求而完成的分配的数量,并基于分配无法完成时所发生的封锁(blockage)的数量进行。下限的设置与“分配预测器”直接相关,上限的设置则与“封锁预测器”有着预定的直接关系。如果空闲空间的数量减少到下限,则需要释放高速缓冲器空间以增加高速缓冲器存储器中的空闲空间的数量。如果空闲空间的数量到达上限,则停止释放高速缓冲器空间。
第5442747号美国专利(由Chan申请)公开了一种多媒体视频处理器芯片,该芯片具有一个多端口集中式高速缓冲器存储器,用以将所有到来的数据和所有送出的数据排队。该高速缓冲器的每个存储区专用于存储来自特定数据源点的数据。选择高速缓冲器的边界使存储区在给定模式的数据流的最差情况下达到最优。该芯片没有使用FIFO设备排队数据,而是使用单个集中式高速缓冲器排队输入和输出的所有数据。高速缓冲器是一种随机存取存储器(RAM),当模式改变时,可以改变其内部边界区。公开的3种模式包括(1)间插帧数据的两个输入流存储在RAM中,而输出数据流将是两个输入流合并的非间插图像数据;(2)缓冲单个输入数据流,并缓冲两个输出数据流;以及(3)输入数据进行排队,最终由硬盘捕获而不显示。边界控制电路在缓冲器中分配不同的寄存器组,使每一组寄存器仅包含来自单个数据源点的数据。每个寄存器组的大小取决于为视频图像存储器系统所选择的特定操作模式。
第5130986号美国专利(由Doshi申请)公开了一种光纤长距离数据通信系统,它要求接收机向发射机确认每一块接收到的数据分组。系统创建了两个窗口(1)一个限制网络数据的“网络窗口”,其大小设置成带宽时延乘积值;以及(2)一个“接收流控制窗口”,用以暂时保持所接收的数据以确保分组未遗漏或丢失。接收机流控制窗口被设置成大于或等于网络窗口尺寸的两倍的值。
第5440692号美国专利(由Janicek申请)公开了一种可以动态扩展或压缩D-Base2缓冲池。如果剩下的虚拟存储空间少于10M字节,则拒绝扩展请求。如果扩展请求被接受,则分配大小为4K或32K的页面。压缩请求首先需要查看缓冲器中的队列类型。如果队列类型是一种“占用”链,则不释放缓冲器。如果队列类型是一种“未占用”链,则释放缓冲器。如果DB2应用在该链结束,则释放一个“原占用”链。
第5046039号美国专利(由Ugajin申请)公开了一种缓冲器管理系统,其中缓冲器总容量是恒定的,但是发射机缓冲器大小与接收机缓冲器大小的比率是可变的。当每时间间隔出现的接收机缓冲器忙状态大于某个预定值,则增加接收机缓冲器区域(或者接收机缓冲器的数量),而发射机缓冲器区域则减少相同量。
第4158235号美国专利(由Call申请)公开了一种缓冲器存储系统,其中多个I/O端口中的任何一个都可以存取每一个输入/输出缓冲器。存储器单元按照逻辑名分配,逻辑名必须匹配数据端口所请求的名字。
相应地,本发明的主要目的是提供一种打印机,它根据可用作缓冲器的主系统存储器的“缓冲池区”中可用的存储器数量,并根据这些缓冲器所分配的端口的通信参数,动态分配缓冲器大小和缓冲器的数量。
本发明的另一个目标是提供一种打印机,它可以通过按照红外数据关联协议的红外通信端口与发送站通信。
本发明的另一个目标是,通过增加用以有效地存储打印机正接收的打印作业数据的缓冲器的大小和/或增加缓冲器的数量,同时根据正通过其接收数据的特定通信链路的通信参数分配缓冲器的数量和大小,从而最大限度地利用该打印机中的存储器。
本发明的另一个目标是提供一种具有红外通信端口的打印机,在发现特定主机设备时,它根据发现过程期间确定的通信参数在打印机存储器中分配缓冲器的大小和数量,从而能够最有效地从该主机接收数据。
本发明的另一个目标是提供一种与红外通信链路一起使用的通信设备,它通过分配适当大小和数量的缓冲器以有效地使用可用存储器作为其缓冲器,从而使用可以由主站在通信链路另一端发送的通信数据的最大传输分组长度。
本发明的其它目的、优点和其它新颖属性将在下面的描述部分中提出,通过考察下文对本领域技术人员是明显的,或者可以通过本发明的实践可以获知。
为了实现前述和其它目的,并符合本发明的一个方面,提供了一种改进的通信缓冲系统,它动态分配缓冲器的大小和数量,以优化通过通信链路对通信数据分组的接收,而有效地使用可用存储器,以对所分配的存储器数量提供优化的吞吐量。该缓冲系统易于适配红外通信端口,并在“发现”对话过程之后进行动态分配,在前述“发现”对话过程期间,发送红外端口和接收红外端口共享通信参数,之后这两个设备切换到一组议定的通信参数。在此之后,通信缓冲系统根据本发明的原理优化缓冲器的大小和数量。一般而言,一旦发送设备中断(即结束通信会话),本发明的通信缓冲系统返回其默认设置。
本发明的通信缓冲系统也非常适合包含在某个打印装置中,该装置一般以打印作业的形式从一个或多个主机并通过该打印机上的一个或多个端口接收数据。这种类型的打印机一般可以通过若干不同类型的端口接收数据,包括并口、串口、网络端口和红外端口。本发明的原理可以用于为这些不同类型端口中的任意一种动态分配缓冲器的大小和数量,并且如上所述,本发明的原理尤其适用于红外通信端口,因为IrDA(红外数据关联)协议允许主机-接收机组合具有不同传输速率、数据分组长度、最大周转时间和其它通信参数。因为通信参数在很大程度上可以变化,所以直至执行了发现对话过程,接收打印机装置才能实际知道优化缓冲器设置应当是多少。
一旦开始通信会话,主机和本发明的打印机就已经建立了一个发现对话,该打印机将得到足够的信息,从而最有效地分配缓冲器的大小和数量。在该过程开始时,打印机必须首先确定其“缓冲池区”中有多少“空闲”存储器可用,然后确定如何将该缓冲池区最佳划分成发送和接收缓冲器。不仅增加这些缓冲器的大小是重要的,而且经常同样重要的是,针对不同原因增加缓冲器的数量。尤其是在特定主机和打印机组合的通信数据速率相当快时,主机和打印机之间的单个传输会话期间可以收发多于一个数据分组。允许打印机将每个信息分组存储到单个缓冲器中一般是非常有效的,这样能够接收多个分组,打印机应当使多个接收缓冲器可用。当然,这些接收缓冲器中的每一个应当分配有足够的存储器,使它能够存储特定传输序列的每个分组完整的最大分组长度。
在本发明的另一方面,在数据消息的初始接收时刻,首先决定发射缓冲器的大小和数量,可以在考虑该时刻打印机存储器系统中有多少缓冲池区可用之后,才作出该决定。一旦发射缓冲器的大小和数量已确定,则开始配置接收机缓冲器。第一步是执行初步计算,以确保接收机缓冲器容量未被设置成大于主机和打印机间该特定配置的最大周转时间内所能够接收的数据量。在确定这一点之后,可以将接收机缓冲器大小暂时设置成2的幂(Power),缓冲器的数量则设置成剩余的缓冲池大小除以该接收机缓冲器大小。在确信至少存在特定最小数量的接收缓冲器之后,至少将红外通信端口的“窗口尺寸”设置为特定最大尺寸。一旦整个缓冲池区已被分配给这些发送和接收缓冲器,则主机和打印机之间传送实际打印作业数据的通信会话可以开始。
这种缓冲管理方法的主要优点在于其优化的存储器利用率。该端口可用的存储器一直以对当前连接参数最有利的方式使用。因为在系统运行时这些参数可以变化,所以需要进行动态调整。该系统的另一个优点是,数据不需要被拷贝出分组缓冲器,在分组缓冲器中将接收的数据放入某个环,等待被消费。该数据则直接在分组缓冲器之外被消费。
从后续描述及附图中本领域技术人员可以明显看出本发明的其它目的,在这些描述和附图中描述了本发明并示出了一种实现本发明的最佳模式下本发明的一种优选实施例。应当了解,本发明具有其它的不同实施例,在不偏离本发明的前提下,显然能够对其不同方面的若干细节进行改进。相应地,附图和描述在性质上应被认为是说明性的,而不是限制性的。
本申请中的附图形成了说明书的一部分,它说明了本发明的若干方面,与描述和权利要求书一起用以解释本发明的原理。在附图中

图1是根据本发明的原理构造的打印机的主要部件的框图;图2是图1所示打印机的输入缓冲器部分的分解图;图3是图1所示打印机的红外端口所用的红外缓冲器管理器所执行的高层功能的分解图;图4A和4B是图3所示红外缓冲器管理器的“重配置缓冲器”功能的流程图;图5是图3所示红外缓冲器管理器的“缓冲器交付”功能的流程图;图6是图3所示红外缓冲器管理器的“传输完成”功能的流程图;图7是图3所示红外缓冲器管理器的“数据请求”功能的流程图;图8是图3所示红外缓冲器管理器的“数据丢弃”功能的流程图;现在详细参看本发明的本优选实施例,在附图中说明了它的一个例子,在这些附图中相同的标号指示同一个元件。
现在参看附图。图1示出了统一由标号10指明的激光打印机的硬件框图。激光打印机10最好包含特定的相对标准的部件,例如DC电源12,它可能具有多个不同电压值的输出,一个微处理器14,具有地址线、数据线以及控制和/或中断线、只读存储器(ROM)16以及随机存取存储器(RAM),RAM被划分成若干部分以执行若干不同的功能。
激光打印机10还包含至少一个红外输入或并行输入端口,或者在许多情况下同时包含这两种类型的输入端口,标号18用以指明红外端口,而标号20用以指明并行端口。这两个端口18和20每一个都可以连接到相应的输入缓冲器,一般由图1中的标号22指明。红外端口18一般与个人计算机或工作站的红外输出端口通信,该个人计算机或工作站包含某个软件程序,例如字处理器或图形软件包或计算机辅助绘图软件包。类似地,并口20可以连接到包含相同类型程序的相同类型的个人计算机或工作站的并行输出端口。这些输入设备分别由图1中的标号24和26指示。
一旦输入缓冲器22接收到文本或图形数据,通常将其传送到一个或多个由标号28所指示的解释器(interpreter)。一种通用的解释器是PostScriptTM,它是大多数激光打印机所用的工业标准。在解释输入数据之后,通常将数据传送给某个通用图形引擎以进行珊格化,一般是在图1的标号30所指示的RAM部分中进行。为了加速珊格化处理,大多数激光打印机的ROM和RAM中分别存储着一个字体缓冲池和一个可能的字体高速缓冲器。这种字体缓冲池和高速缓冲器提供通用字母数字字符的位图模式,使通用图形引擎30可以在最少的时间内容易地将每个这种字符转换成位图(bitmap)。
一旦数据已被珊格化,它被导入排队管理器或页面缓冲器,它是标号34所指示的RAM的一部分。在一般的激光打印机中,在物理打印某个珊格化数据页的硬拷贝所需的时间间隔内将该页完整地存入排队管理器。排队管理器34中的数据实时传送给标号36所指定的打印引擎。打印引擎36包括打印头中的一个激光光源,其输出40是一页纸上的物理墨印,它是激光打印机10的最终打印输出。
应当理解,地址、数据以及控制线一般聚合在总线中,它们是激光打印机10不同电子元件周围进行并行(有时也复用)物理通信的导电路径。例如,地址和数据总线一般接入所有ROM和RAM集成电路,而控制线或中断线一般导向所有充当缓冲器的输入或输出集成电路。
本发明的缓冲器管理方案适用于任何面向分组的链路协议,例如以太网协议、令牌环协议或Local Talk协议。因为其动态性质,红外协议是目前唯一使用所有这些属性的协议。红外端口通过发送站发送一束光,由接收站对其进行检测来通信。因为检测器的性质,如果某个站正在发送数据,其检测器因受其自身发射的影响而无法接收。这与两个站同时发射一样,将不可避免地混淆传输,因此必须一次仅有一个站占用该链路。这在大多数网络协议中是一种共同的限制。
发送站发送的光的频率决定了链路上的数据传送速率。并不是所有的红外设备都能以相同速度收发数据。目前数据传送速率是从2400比特每秒到4兆比特每秒。为了优化通信,这些站必须确定彼此的性能。这通过一种称为“发现”的过程来完成。所有能够进行红外通信的站,如果它们没有积级参与某次会话,则进入某个称为“正常中断模式”(NDM)的状态。
IR站被划分成两大类“主站”和“辅站”。实际上,这些分类是指某个站正在起的作用,而不是充当永久标识。当某个IR站希望启动一次对话,它成为主站并启动一个发现处理。主站通过标准化处理确定存在于其范围内的所有IR站。NDM状态的数据传送参数已被定义,NDM中的所有站侦听与这些参数相关的业务量。但是,NDM业务量以较低数据传送速率(即9600比特每秒)传导,所以如果可能,主站希望切换到较高的数据传送速率。
主站识别它希望与之通信的站,并向该站发送一个“设置正常响应模式”(SNRM)命令。该命令仍以NDM状态发送,指示辅站该主站希望发起一次连接,并指示主站的所有性能。辅站随后比较主站和它自己的性能,确定两个站都能够支持的最佳通信参数集合。它将该信息发送(仍在NDM状态下)回主站。此时,这两个站都切换到新的通信参数并开始连接。一些重要的通信参数包括数据传送速率、最大周转时间、最小周转时间、最大分组长度以及附加的开始帧的数量。所有这些属性都非常重要,因为它们影响单个分组中可以发送和/或接收的数据量。
精确地说,是动态调整分组长度的红外协议能力产生了存储器管理上的问题。该问题还进一步受存在着三种(基于传输速度的)不同编码方案的影响。大多数网络协议(包括IR)具有特定的保留比特模式,用以指示特殊情况(例如分组的开始和结束等)。如果数据中出现了这些比特模式,则必须以某种方式对它们进行“注释”以防止错误解释。解决这个问题的两中编码方案使用“比特填充”。这实际上要求必须有执行这种操作的硬件,因而并不影响缓冲器大小。但是,第三编码方案(用于较低的数据传输速度)通常以软件方式实现,并通过“字节填充”来完成。这使分组中的每个数据字节都可能占用两个字节的缓冲器空间,这必须在调整缓冲器大小时予以考虑。
一种分配缓冲器的简单的传统方法是,将为该IR链路保留的存储器容量划分成合理数量的缓冲器、一个输入环和一个输出环。当数据进入时,将其从缓冲器中移到输入环,当生成的数据需要发出时,将其从输出环移入缓冲器中以进行传输。但是,这种方案中的缺陷在于,缓冲器总是必须设置成支持的最大数据分组长度。因为数据分组长度是动态协商的,可能不同作业间就会有所不同,所以这种安排实际上导致了数量非常大的缓冲器空间被浪费。此外,它在最小存储器需求上没有灵活性,系统必须总假定最差情况,并分配支持的最大数据分组长度,而不管实际上是否需要(并且实现无法确定)。
另一方面,不断将缓冲器调整到(动态协商)分组长度的方案将导致优化的存储器利用率,从而有一个较大的端口吞吐量。在本发明的存储器管理方案中,最好仅将存储器划分成分组缓冲器。为了提高存储器利用率,分组缓冲器被划分成输入缓冲器和输出缓冲器。这是为了优化具有不同增强硬件的系统(例如,如果数据在硬件中“未注释”,则必须由软件进行“注释”),同时优化基于站的效果的系统(例如,打印机可能希望若干较大的输入缓冲器,而仅需要一些较小的输出缓冲器)。
在初始化时,分配给IR链路的存储器池基于上述因素所确定的试探法划分成输入和输出缓冲器,并假定了NDM组的通信参数。一旦通过SNRM命令接收到一组新的通信参数,则所有未使用的缓冲器将不再有效,它们的存储器被合并在一起,基于与前面相同的试探法创建一组新的缓冲器(但是,现在使用新的通信参数)。
在本发明中,每一个前述通信参数都可能影响让每个分组缓冲器具有多大容量的决定。在本申请中,术语“最大周转时间”是指某个站可以占用通信信道,直到将其周转以允许其它站有机会使用该信道的总时间量。因此,没必要拥有大于能够在该时间段内发送(基于数据传送速率)的数据量的发送或接收缓冲器。术语“最小周转时间”是指在发送站和接收站切换角色之后,链路必须保持空闲的时间量。该时间用以使站接收机从其自身发射机所引起的饱和中恢复过来,并且不同设备的“最小周转时间”是不同的。该属性还减少了站发送数据的时间量。“最大分组长度”是站用以指示它能够处理的最大分组缓冲器的参数。因此,没必要拥有大于该值的发送缓冲器。“开始帧”(BOF)数量是站可以请求发向它的所有帧都包含多于该BOF默认数量的参数。增加该值还减少了发送数据的时间,从而影响缓冲器容量。
主站和辅站必须在“发现”过程中协商并议定一种共同的数据传送速率,以及最大周转时间。但是,对每个站而言,其它参数是唯一的。辅站的最大发送分组缓冲器容量可以描述成下述两者之一的最小值(1){(主站的最大周转时间-最小周转时间)×(以字节每毫秒计算的传输速度)-主站的BOF数量}或(2){主站的最大分组长度}。
类似地,辅站的最大有效接收缓冲器容量是(1){(辅站的最大周转时间-最小周转时间)*(以字节每毫秒计算的传输速度)-辅站的BOF数量}或(2){辅站的最大分组长度}。
这些容量可能需要基于辅助硬件(或缺少辅助硬件)进行调整,并优化该设备的主要功能。每次协商新的数据分组长度(实际上每次主站与辅站进行协商),然后重新计算缓冲器容量,重新回收未用的存储器空间,将其划分成适合该设备的发送和接收缓冲器。当数据被接收到分组缓冲器时,它保持在该缓冲器并与包含输入数据的其它分组一起顺序排队。然后将这些数据逐个分组地显示给“消费者”。在第一分组的所有数据都被消费之前,唯一显示给消费者的是包含在第一分组中的数据地址与该分组中的数据字节数。此时,分组被释放,可用以接收更多的数据,并向消费者显示队列中下一个分组中的数据。
图2中,示出了正与输入缓冲器22通信的IR端口18。有两个通信方向,标号50示出了一个输入方向,标号60示出了一个输出方向。当IR端口18从主机或其它类型的发送站接收到数据分组时,这些分组被逐个交付到标号51-58所示的接收缓冲器中的一个。例如,如果发送站(或“主站”)24和IR端口18都能够以相当快的数据速率通信,则实际上可以在单个最大周转时间间隔内收发若干数据分组。根据IrDA标准,一个周转时间中最多可以发送7个分组,因此,当在快速通信链路上使用红外端口时,在输入缓冲器22中分配7个接收缓冲器以接收这7个(但是较少的分组也可以接受)数据分组将是有益的。如图2所示,标号51表示接收缓冲器#1,标号52表示接收缓冲器#2,并且标号57表示接收缓冲器#7,等等。
即使将每最大周转时间分组的最大“窗口”大小限制为7,仍可能希望分配总数多于7个的接收缓冲器,因为可能会出现打印机处理系统在输入缓冲器22接收下次数据分组传输之前无法访问接收缓冲器51-57中的数据的情况。因此,希望能有更多的接收缓冲器,图2示出的特定配置下接收缓冲器的最大数量可以多达标号58所示的“接收缓冲器N”。
图2还在标号61-68处示出了多个发送缓冲器。对打印设备而言,每个发送缓冲器的所需容量可能远比每个接收缓冲器的所需容量要小,因为打印机接收大量的数据远比打印机发送大量数据的可能性要大。但是,正常情况下希望在输入缓冲器22中有若干不同的发送缓冲器可用,从而使打印机10可以发送多个短消息到它的IR端口18,该打印机还可以找到适宜的地方暂时存储这些需要发送的消息,每个发送缓冲器一个,直至该通信链路实际上可用于发送那些数据分组。
应当理解,其它类型通信链路在单个周转时间周期中可发送的分组或序列的最大数量可能远比7大,因此,可以配置输入缓冲器22,使之分配远大于7个接收缓冲器以处理这种通信端口,而并不偏离本发明的原理。类似地,对不同的其它类型通信端口而言,分配的发送缓冲器的数量也可能远大于图2所示的数量,而并不偏离本发明的原理。还需要理解,发送和接收缓冲器的数量和容量可以基于下述因素动态分配不同通信参数和目前可用作非IR端口的其它类型端口缓冲器的存储器的通用“缓冲池区”中可用存储器的最大容量,而采用本发明的原理。
图3示出了IR缓冲器管理器(统一由标号100指示)的任务。在与主机的每个对话的开端(包括主机正尝试向打印机10发送一个打印作业的情况),IR端口18在称为“发现”的过程期间以标准9600波特传输速率接收初始通信消息,以确定主机(即发送站)24和打印机(即接收站)10都可用的优化数据通信参数。在“发现”过程期间,这两个设备商定后续数据传输期间所用的通信参数,尤其包括数据传输速率。在发现过程结束时,这两个设备(即发送站24和接收站10)则切换到商定的通信参数。一旦这两个设备切换到新的通信参数,IR缓冲器管理器将通过标号102所示的过程重新配置缓冲器来优化其缓冲器。这是一个相当复杂的过程,后文将予以详细描述。
在重新配置了缓冲器之后,发送站现在可以以打印作业,或其它类型通信消息的形式发送其数据。当数据进入IR端口18时,功能108需要一个缓冲器,并在功能104处启动缓冲器交付过程。下文将详细描述缓冲器交付过程104。缓冲器请求功能108用以为到来的数据提供一个缓冲器。一旦重新配置了缓冲器(使用功能102),所有的缓冲器都是空的(或“空闲”的),缓冲器请求功能108占据了空闲缓冲器列表的“顶端”缓冲器,并交付该缓冲器。
图3中示出的IR管理器的其它功能是发送完成功能106、数据请求功能110以及数据丢弃功能112。这些功能也在下文中详细描述。图3中的数据消费者28一般代表打印机上发现的一个或多个解释器。当然,如果本文所描述的通信系统应用于某个非打印装置,则数据消费者可能是某个不同装置,例如非易失性存储器存储设备或某种类型的监视器或显示器。
图4A和4B是重配置缓冲器功能102的流程图。从功能框150开始,丢弃任何仅属于该特定主机的剩余发送信息。逻辑流现在到达判断框152,判断是否存在任何“已用”缓冲器?该问题是询问此刻是否存在任何具有未消费数据的接收缓冲器,如果存在,则功能框154将这些缓冲器封装到空闲缓冲池中缓冲器顶端的相邻存储器中。随后减小空闲缓冲池的大小,现在开始分配缓冲器,并相应调整缓冲器的容量。
功能框156现在设置发送缓冲器容量,打印机的发送缓冲器容量一般非常小,例如是64字节。一般而言,最大发送缓冲器容量等于下述两者之一的最小值(1){(主站的最大周转时间-主站的最小周转时间)×(以字节每毫秒计算的传输速度)-主站的BOF数量}或(2){主站的最大分组长度}。
判断框158现在检查缓冲池容量是否大于20K字节。如果大于该值,功能框160将打印机的发送缓冲器的数量设置成16。如果不大于该值,判断框162确定该缓冲池容量是否大于10K字节。如果大于该值,功能框166将发送缓冲器的数量设置成8,如果不大于该值,功能框164将发送缓冲器的数量设置成4。
判断框170现在确定该端口所用的连接方法(即通信方法)是否是SIR,SIR代表“慢速”红外通信。如果是,则功能框172使所有发送缓冲器的容量加倍,从而使SIR数据传输速度所需的字节填充成为可能,这种字节填充处理需要较大的缓冲器容量支持。功能框174分配这些发送缓冲器,并相应调整空闲缓冲池容量。逻辑流现在到达了框“A”,它将逻辑流导向图4B。
在图4B中,逻辑流从框“A”流向功能框180,后者设置接收缓冲器的容量。最大有效接收缓冲器容量等于下述两者之一的最小值(1){(辅站的最大周转时间-最小周转时间)×(以字节每毫秒计算的传输速度)-辅站的BOF数量}或(2){辅站的最大分组长度}。
功能框182现在将接收缓冲器容量调整到2的下一个最高幂。判断框184则检查接收缓冲器容量是否大于2K字节(按照IrDA协议的最大数据缓冲器容量)。如果大于该值,功能框186将接收缓冲器容量减小到2048字节(即2K)。
功能框188现在设置接收缓冲器的数量。剩余的缓冲池区的容量除以新确定的接收缓冲器容量,即得到需要分配的接收缓冲器的数量。判断框190确定接收缓冲器的数量是否大于4。如果不大于4,则功能框192将接收缓冲器的容量除以2。逻辑流现在回转到功能框188,后者将缓冲器的数量设置成等于缓冲池区容量除上接收缓冲器容量(该容量刚被除以2)。
逻辑流在此返回判断框190,继续该逻辑“DO循环”,直至接收缓冲器的数量大于4。一旦已满足该条件,逻辑流从判断框190的YES输出流向功能框194。
在功能框194,将“窗口尺寸”设置成等于下述量的截取整数值(缓冲器数量减1,除以2)。如上所述,窗口尺寸是指单个周转时间间隔内能够收发的数据分组的数量。保留的分配缓冲器(如果可用)最好至少能够填满窗口尺寸,从而可以接收最大数量的数据分组,一个缓冲器一个分组。
逻辑流现在导向判断框195,确定窗口尺寸是否大于7个缓冲器。如果大于该值,则功能框196将窗口尺寸设置成等于7,即使用IrDA协议在单个周转时间内能够传送的最大分组数量。功能框198现在从该例程中退出。
图5示出了缓冲器交付功能104的流程图。从判断框200开始,确定是否请求一次发送或接收。如果这是一次发送请求,功能框204将这些数据排入(即将数据加入某个队列)“端口发送缓冲器队列”中。如果这是一次接收请求,则逻辑流导向功能框202,将这些数据排入“端口接收缓冲器队列”中。
在本发明的通信系统中最好使用4种不同类型的队列(1)空闲发送缓冲器队列,(2)空闲接收缓冲器队列(或“空闲缓冲器列表”),(3)已用发送缓冲器队列,以及(4)已用接收缓冲器队列(或“接收队列”)。“空闲”发送和接收缓冲器实际上是空缓冲器,可用于IR端口。“已用”发送和接收缓冲器实际上是当前包含一些合法数据的缓冲器。
逻辑流从功能框204导向判断框206,询问该数据是否是发送队列中仅有的元素。如果是,则功能框208发信号给IR端口18以允许传输开始。功能框210现在退出该例程。需要理解,如果消费者无法足够迅速地得到数据,则在端口接收缓冲器队列中排队的接收缓冲器可以成为备用。消费者通过数据请求功能110完成该操作,下面结合图7详细描述数据请求功能110。
图6是发送完成功能106的流程图。在功能框220,缓冲器被移到空闲缓冲池,队列增长。它从占用队列中删去了发送缓冲器,并将其发送到新的发送缓冲器队列。在判断框222确定输出队列是否为空。如果不空,功能框224发信号给IR端口18,通知发送开始。逻辑流现在导向功能框226,它退出该例程。
图7是数据请求例程110的流程图。判断框240确定接收队列是否为空。如果为空,则功能框222返回给数据消费者一个消息“无数据”。如果不为空,则意味着当前有一些接收缓冲器被占用。
如果存在着已被占用的接收缓冲器,则功能框242将顶端缓冲器的未消费部分交付给数据消费者。这种操作对一个缓冲器执行一次。现在到达退出功能246,结束该例程。
图8是数据丢弃功能112的流程图。功能框图260将接收队列顶部的“缓冲器指示部分”标记为正被“消费”。在此之后,判断框262确定整个接收缓冲器是否已被消费完。如果是,则功能框264将已用接收缓冲器队列的顶部缓冲器移入新接收缓冲器队列,并增量接收队列。逻辑流现在到达功能框266,退出该例程。数据丢弃功能112实际上通知IR缓冲器管理器100接收队列中的数据已被消费。
本发明优选实施例的前述描述旨在说明和描述,并没有穷尽本发明或将本发明限制于所公开的精确形式。根据上述原理,显然可以进行改进和变化。选择并描述该实施例是为了最好地说明本发明的原理及其实际应用,从而允许本领域中的一般技术人员在不同实施例中最好地使用本发明,并针对特定应用进行适当的不同改进。本发明的范围由后附权利要求定义。
权利要求
1.在一种包括存储器存储设备、双向通信端口以及处理电路的计算机系统中,一种为发送和接收缓冲器有效地分配存储器空间的方法,所述方法包括下述步骤通过下述方式将所述存储器存储设备中存储器单元的“缓冲池区”划分成多个发送缓冲器和接收缓冲器(a)创建多个发送缓冲器,其中所述发送缓冲器的数量以及每个所述发送缓冲器的容量取决于所述通信端口开始接收消息时的总可用缓冲池容量;以及(b)创建多个接收缓冲器,其中每个所述接收缓冲器的容量取决于与提供所述消息给所述通信端口的通信链路类型相关的通信参数,并取决于开始接收该消息时的总可用缓冲池容量;在所述缓冲池区中创建的接收缓冲器的数量还取决于所述通信端口开始接收所述消息时的总可用缓冲池容量和所述接收缓冲器的容量。
2.根据权利要求1的方法,其中提供所述消息给所述通信端口的通信链路类型的所述通信参数之一包括所述通信端口正接收的所述消息的最大周转时间说明。
3.根据权利要求2的方法,其中所述通信端口正接收的所述消息的所述最大周转时间说明在所述打印装置的所述通信端口和所述通信链路另一端的发送站之间的“发现”过程期间确定。
4.根据权利要求1的方法,其中所述通信端口包括一个红外端口。
5.根据权利要求1的方法,其中所述计算机系统驻留在打印装置中。
6.根据权利要求5的方法,其中辅站的最大发送分组缓冲器容量是下述之一的最小值(1){(所述通信链路的最大周转时间-发送设备的所述红外通信端口的最小周转时间)×(以字节每毫秒计算的传输速度)-所述发送设备的BOF数量},以及(2){所述发送设备的最大分组长度}。
7.根据权利要求5的方法,其中所述接收缓冲器的最大有效容量是下述之一的最小值(1){(所述通信链路的最大周转时间-所述打印装置的所述红外通信端口的最小周转时间)×(以字节每毫秒计算的传输速度)-所述打印装置的BOF数量},以及(2){所述打印装置的最大分组长度}。
8.根据权利要求5的方法,还包括下述步骤当所述打印装置和位于所述通信链路另一端的所述发送站之间的连接类型显示一种相对较慢的数据传输速度时,进一步增加发送缓冲器的容量。
9.根据权利要求8的方法,其中所述连接类型包括串行红外通信链路。
10.根据权利要求5的方法,其中所述打印装置将发送缓冲器和接收缓冲器的最小数量分别限制在预定数量,缓冲池容量甚至需要减少每个所述发送和接收缓冲器的容量以达到所述预定数量。
11.根据权利要求5的方法,其中所述打印装置要求接收缓冲器的最小数量大于按照红外数据关联标准在单个周转时间内可以发送的数据分组的窗口尺寸。
12.一种计算机系统,包括(a)一个存储器电路,所述存储器电路包含一个存储器单元的“缓冲池区”,所述缓冲池区被划分成多个发送缓冲器和多个接收缓冲器;(b)一个双向通信端口,它与至少一个外部设备和所述存储器电路通信,所述通信端口将来自所述至少一个外部设备的数据提供给所述多个接收缓冲器,并从所述多个发送缓冲器中提供数据给所述至少一个外部设备;以及(c)一个处理电路,它被配置成控制所述存储器电路和所述通信端口之间的数据流,所述处理电路也被配置成确定所述多个发送和接收缓冲器的数量和容量,其中在所述缓冲池区中创建的发送缓冲器的数量取决于所述通信端口开始接收消息时的总可用缓冲池容量;每个所述接收缓冲器的容量取决于与提供所述消息给所述通信端口的通信链路类型相关的通信参数,并取决于开始接收该消息时的总可用缓冲池容量;以及在所述缓冲池区中创建的接收缓冲器的数量还取决于所述通信端口开始接收所述消息时的总可用缓冲池容量和所述接收缓冲器的容量。
13.根据权利要求12的计算机系统,其中提供所述消息给所述通信端口的通信链路类型的所述通信参数之一包括所述通信端口正接收的所述消息的最大周转时间说明。
14.根据权利要求13的计算机系统,其中所述通信端口正接收的所述消息的所述最大周转时间说明在所述打印装置的所述通信端口和所述通信链路另一端的发送站之间的“发现”过程期间确定。
15.根据权利要求12的计算机系统,其中所述通信端口包括一个红外端口。
16.根据权利要求12的计算机系统,其中所述计算机系统驻留在打印装置中。
17.根据权利要求16的打印装置,其中辅站的最大发送分组缓冲器容量是下述之一的最小值(1){(所述通信链路的最大周转时间-发送设备的所述红外通信端口的最小周转时间)×(以字节每毫秒计算的传输速度)-所述发送设备的BOF数量},以及(2){所述发送设备的最大分组长度}。
18.根据权利要求16的打印装置,其中所述接收缓冲器的最大有效容量是下述之一的最小值(1){(所述通信链路的最大周转时间-所述打印装置的所述红外通信端口的最小周转时间)×(以字节每毫秒计算的传输速度)-所述打印装置的BOF数量},以及(2){所述打印装置的最大分组长度}。
19.根据权利要求16的打印装置,其中所述处理电路还被配置成,当所述打印装置和位于所述通信链路另一端的所述发送站之间的连接类型显示一种相对较慢的数据传输速度时,进一步增加发送缓冲器的容量。
20.根据权利要求19的打印装置,其中所述连接类型包括串行红外通信链路。
21.根据权利要求16的打印装置,其中所述打印装置将发送缓冲器和接收缓冲器的最小数量分别限制在预定数量,缓冲池容量甚至需要减少每个所述发送和接收缓冲器的容量以达到所述预定数量。
22.根据权利要求16的打印装置,其中所述打印装置要求接收缓冲器的最小数量大于按照红外数据关联标准在单个周转时间内可以发送的数据分组的窗口尺寸。
全文摘要
本发明提供了一种改进的通信缓冲器系统,它能够动态地分配缓冲器的容量和数量以优化通过通信链路对通信数据分组的接收,同时有效地使用可用的存储器量,以向所分配的存储器量提供优化的吞吐性能。该缓冲器系统易于适配打印机所用的红外通信端口。一旦开始通信会话,打印机将得到足够的信息,从而最有效地分配缓冲器的容量和数量。
文档编号G06F3/12GK1201194SQ9810831
公开日1998年12月9日 申请日期1998年5月12日 优先权日1997年5月12日
发明者里基·C·布朗, 马克·L·梅伯利 申请人:莱克斯马克国际公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1