CN101499048A - 总线编/解码方法和总线编/解码器 - Google Patents

总线编/解码方法和总线编/解码器 Download PDF

Info

Publication number
CN101499048A
CN101499048A CNA2008100015001A CN200810001500A CN101499048A CN 101499048 A CN101499048 A CN 101499048A CN A2008100015001 A CNA2008100015001 A CN A2008100015001A CN 200810001500 A CN200810001500 A CN 200810001500A CN 101499048 A CN101499048 A CN 101499048A
Authority
CN
China
Prior art keywords
matrix
conversion
pattern
data
word
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CNA2008100015001A
Other languages
English (en)
Inventor
沈文博
李彧
郑凯
林海波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Priority to CNA2008100015001A priority Critical patent/CN101499048A/zh
Priority to US12/360,914 priority patent/US8085172B2/en
Publication of CN101499048A publication Critical patent/CN101499048A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L25/00Baseband systems
    • H04L25/38Synchronous or start-stop systems, e.g. for Baudot code
    • H04L25/40Transmitting circuits; Receiving circuits
    • H04L25/49Transmitting circuits; Receiving circuits using code conversion at the transmitter; using predistortion; using insertion of idle bits for obtaining a desired frequency spectrum; using three or more amplitude levels ; Baseband coding techniques specific to data transmission systems
    • H04L25/4906Transmitting circuits; Receiving circuits using code conversion at the transmitter; using predistortion; using insertion of idle bits for obtaining a desired frequency spectrum; using three or more amplitude levels ; Baseband coding techniques specific to data transmission systems using binary codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3253Power saving in bus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

提供了将经由并行总线以突发串方式发送的数据编码的编码方法/编码器和对应解码方法/解码器,并行总线宽度为n位,每个突发串包括m个数据字,该编码方法包括:将k个突发串的数据组织为(p×q)个Li×Cj矩阵,i=1,…,p,j=1,…,q,且;对每个矩阵确定是否存在能减少其总线切换数目的变换模式,当存在这种变换模式时确定该矩阵需要变换并确定用于变换该矩阵的对应变换模式;对确定需要变换的矩阵利用对应变换模式对其进行变换,用变换后的矩阵替换该矩阵;将确定不需要变换的矩阵和经替换的矩阵形成一个待发送的n×(k×m)矩阵;产生指示各矩阵变换状态的n位的变换信息字;将变换信息字附加到所述待发送的矩阵以形成实际需要发送的矩阵。

Description

总线编/解码方法和总线编/解码器
技术领域
本发明涉及一种总线编/解码方法及对应的总线编/解码器。更具体地,本发明涉及一种能够减小输入/输出(I/O)电路功耗的总线编/解码方法及对应的总线编/解码器。
背景技术
目前,能源和环境问题是全世界关心的问题。对于计算系统,从芯片的层面上到系统的层面上追求低功率是个热门话题。当计算系统的功率增大时,用于给该系统供电的开销以及系统散热开销以更高的速率增大。因此,诸如IBM、Intel、AMD、Sun等的芯片制造商都在努力降低它们的芯片和系统所消耗的功率。
计算系统通常由处理器和外围的输入/输出(I/O)电路组成。相应地,计算系统的功率由处理器的功率和I/O电路的功率(在下文中,称为I/O功率)组成。目前,作为降低计算系统功率的一种途径,已经提出了很多降低处理器功率的方法。例如,Intel提出了一种电源管理方法,其在中央处理单元(CPU)的负荷较低时降低CPU的工作电压和频率,从而降低CPU的功率。然而,该方法没有涉及降低I/O功率。当不使用该方法时,I/O功率占计算系统功率的50%左右,而当使用该方法时,由于处理器功率降低到其原来值的大约10%而I/O功率相对地保持不变,因此I/O功率的比率升高到70%或更高,从而导致不平衡的处理器功率和I/O功率。而且,已经发现对于移动设备,I/O功率的比率可高达80%。因此,作为降低计算系统功率的另一途径,降低I/O功率越来越重要。
I/O功率由动态I/O功率和静态I/O功率组成。已经证实动态I/O功率可由以下公式表示:
P=C·N·VDD 2·f        (1)
其中,P为动态I/O功率,C为I/O电路的等效电容,VDD为工作电压,f为工作频率,N为总线切换数目。所述总线切换数目是指总线在发送不同逻辑值的数据时进行的电平切换(或反转)的次数;具体地说,例如,在总线发送具有第一逻辑值(0或1)的第一比特之后,如果接下来要发送的第二比特具有不同于第一逻辑值的逻辑值(1或0),则需要将总线上的电平从第一逻辑值切换(或反转)为第二逻辑值以发送该第二比特,这对应于一次总线切换;当总线发送一个字时,总线切换数目即为发送该字时的电平切换的总数目。由上述公式(1)可知,当其它条件不变时I/O功率正比于总线切换数目N。因此,除了降低工作电压和频率以外,还可以通过减小N来减小I/O功率。
已经提出了很多方法来减小总线切换数目。例如,在M.R.Stan等人的“Bus-Invert Coding for Low-Power I/O”(IEEE Transactions on VLSI,pp.49-58,Mar.1995)中提出了一种方法。在该方法中,在发送了字D0(64比特)之后,检查发送下一个字D1(64比特)是否需要切换字D0的超过一半的比特,即,检查字D0与字D1之间的不同比特的数目是否超过一半(32个),如果是,则切换(即,反转)字D1的全部比特,使得最多需要32次总线切换;同时,产生变换信息以指示所发送的字是否被反转并且使用额外的信号线来发送该变换信息。这种方法能够减小总线切换数目,然而,由于所发送的数据的模式难以预测,因此使用一种变换模式(即,反转)来处理所有数据不一定能得到最优的结果;而且,这种方法需要增加额外的信号线,这将导致电路设计的不兼容。至于所提出的其它用于减小总线切换数目的方法,它们要么需要额外的信号线,要么需要复杂的算法来推导总线编码方案,要么只适用于地址总线,并且这些方法都没有从时间和空间的角度综合考虑数据的编码和发送。
因此,需要一种通过减小总线切换数目来降低I/O功率的总线编/解码器和总线编/解码方法,其不仅适用于地址总线还适用于数据总线,并且与现有系统具有良好的兼容性。
发明内容
考虑到以上问题而提出了本发明。本发明的目的是提供一种基于矩阵变换的总线编码器和总线编码方法以及相应的总线解码器和总线解码方法,所述总线编码器和总线编码方法能够在向I/O电路发送数据之前通过选择性地对该数据进行变换来减小实际发送给该I/O电路的数据的总线切换数目,从而降低I/O功率和计算系统的功率,并且,其与现有系统具有良好的兼容性。
根据本发明的一个方面,提供了一种对经由并行总线以突发串方式发送的数据进行编码的方法,其中并行总线宽度为n位,每个突发串包括m个数据字,m和n为自然数,该方法包括:组织步骤,将k个所述突发串的数据组织为(p×q)个Li×Cj矩阵,其中k、p、q、i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ i = 1 q C j = k × m ; 确定步骤,对于每个所述Li×Cj矩阵,确定是否存在能够减少该矩阵的总线切换数目的变换模式,并且当存在能够减少该矩阵的总线切换数目的变换模式时确定该矩阵需要进行变换并且确定用于变换该矩阵的对应变换模式;变换步骤,对于确定需要进行变换的矩阵,利用所确定的用于变换该矩阵的对应变换模式对其进行变换,并且用变换后的矩阵替换所述确定需要进行变换的矩阵;形成步骤,将确定不需要进行变换的矩阵和经过替换的矩阵形成一个待发送的n×(k×m)矩阵;产生步骤,产生指示所述(p×q)个Li×Cj矩阵的变换状态的长度为n位的变换信息字;以及附加步骤,将所述变换信息字附加到所述待发送的n×(k×m)矩阵以形成实际需要发送的编码矩阵。
根据本发明的另一方面,提供了一种对经由并行总线以突发串方式发送的数据进行编码的编码器,其中并行总线宽度为n位,每个突发串包括m个数据字,m和n为自然数,该编码器包括:组织单元,将k个所述突发串的数据组织为(p×q)个Li×Cj矩阵,其中k、p、q、i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ i = 1 q C j = k × m ; 确定单元,对于每个所述Li×Cj矩阵,确定是否存在能够减少该矩阵的总线切换数目的变换模式,并且当存在能够减少该矩阵的总线切换数目的变换模式时确定该矩阵需要进行变换并且确定用于变换该矩阵的对应变换模式;变换单元,对于确定需要进行变换的矩阵,利用所确定的用于变换该矩阵的对应变换模式对其进行变换,并且用变换后的矩阵替换所述确定需要进行变换的矩阵;形成单元,将确定不需要进行变换的矩阵和经过替换的矩阵形成一个待发送的n×(k×m)矩阵;产生单元,产生指示所述(p×q)个Li×Cj矩阵的变换状态的长度为n位的变换信息字,和附加单元,将所述变换信息字附加到所述待发送的n×(k×m)矩阵以形成实际需要发送的编码矩阵。
根据本发明的另一方面,提供了一种用于将经由并行总线发送的编码数据解码的方法,其中并行总线宽度为n位,所述编码数据包含长度为n位的变换信息字和k个突发串的数据,每个突发串包含m个数据字,k、m和n为自然数,该方法包括以下步骤:提取步骤,根据预定义的变换信息字位置信息而从编码数据中提取所述变换信息字;组织步骤,根据预定义的矩阵数目和各个矩阵的大小而将编码数据中的剩余数据组织为(p×q)个Li×Cj矩阵,其中p、q、i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ i = 1 q C j = k × m ; 确定步骤,根据所述变换信息字确定每个所述Li×Cj矩阵的变换状态;逆变换步骤,根据所确定的每个所述Li×Cj矩阵的变换状态,对所述(p×q)个Li×Cj矩阵中被变换的矩阵进行相应的逆变换并用逆变换后的矩替换所述被变换的矩阵,并且将被确定为未被变换的矩阵保持不变;以及形成步骤,将被确定为未被变换的矩阵和经过替换的矩阵形成一个n×(k×m)矩阵作为原始数据矩阵。
根据本发明的另一方面,提供了一种用于将经由并行总线发送的编码数据解码的解码器,其中并行总线宽度为n位,所述编码数据包含长度为n位的变换信息字和k个突发串的数据,每个突发串包含m个数据字,k、m和n为自然数,该解码器包括:提取单元,根据预定义的变换信息字位置信息而从编码数据中提取所述变换信息字;组织单元,根据预定义的矩阵数目和各个矩阵的大小而将编码数据中的剩余数据组织为(p×q)个Li×Cj矩阵,其中p、q、i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ i = 1 q C j = k × m ; 确定单元,根据所述变换信息字确定每个所述Li×Cj矩阵的变换状态;逆变换单元,根据所确定的每个所述Li×Cj矩阵的变换状态,对所述(p×q)个Li×Cj矩阵中被变换的矩阵进行相应的逆变换并用逆变换后的矩阵替换所述被变换的矩阵,并且将被确定为未被变换的矩阵保持不变;以及形成单元,将被确定为未被变换的矩阵和经过替换的矩阵形成一个n×(k×m)矩阵作为原始数据矩阵。
当需要向I/O电路发送数据以将该数据发送到外部时,根据本发明的编码方法/编码器从空间和时间的角度将要发送的数据组织为一个或多个矩阵,然后选择性地对所述一个或多个矩阵进行矩阵变换,以减小实际发送给I/O电路的数据的总线切换数目,从而减小I/O功率和整个计算系统的功率。由于根据本发明的编码方法/编码器不需要额外的信号线,因此其与现有系统具有良好的兼容性。
附图说明
通过结合附图对本发明的实施例进行详细描述,本发明的上述和其它目的、特征、优点将会变得更加清楚,其中:
图1是示出根据本发明的、将通过并行总线发送的一个突发串的数据组织为一个矩阵的示例的图。
图2是图示根据本发明实施例的总线编码器和总线解码器的框图。
图3(a)、图3(b)和图3(c)示出了根据本发明的变换表的示例。
图4示出了图2所示的编码部件和解码部件的变型。
图5是示出根据本发明实施例的总线编码方法的流程图。
图6是示出图5所示的步骤S504、S505和S506中的详细操作的流程图。
图7是示出根据本发明实施例的总线解码方法的流程图。
图8示出了用于例示根据本发明实施例的总线编码方法和总线解码方法的第一示例。
图9示出了用于例示根据本发明实施例的总线编码方法和总线解码方法的第二示例。
图10示出了用于例示根据本发明实施例的总线编码方法和总线解码方法的第三示例。
图11示出了用于例示根据本发明实施例的总线编码方法和总线解码方法的第四示例。
具体实施方式
下面将参照附图来详细描述本发明的优选实施例,在附图中,相同的参考标号自始至终表示相同的元件。应当理解:这里描述的实施例仅仅是说明性的,而不应被解释为限制本发明的范围。本领域技术人员将认识到:在不背离本发明的精神和范围的情况下,可以对这些实施例做出各种修改和组合。
本发明基于以下发现:
(1)如上述公式(1)所示,当其它条件不变时,I/O功率与发送数据时的总线切换数目成正比,因此,可以通过减小所发送的数据的总线切换数目来减小I/O功率;
(2)由于在CPU内通过编码或其它方法减少经由I/O电路发送数据时的比特切换(即,反转)所消耗的功率远低于不经任何处理而直接经由I/O电路发送所述数据所消耗的功率,因此,可以通过预先处理要发送的数据以减少经由I/O电路发送所述数据时的比特切换次数来大幅降低I/O功率;以及
(3)目前,大多数I/O电路和存储系统以突发串(burst)的方式发送或接收数据,即,在一个突发串中一次连续发送或接收多个数据字,而不是仅发送或接收一个数据字(在下文中,将突发串中的数据字的数目定义为突发串长度)。例如,大多数存储系统在一个突发串中连续发送8个数据字,即突发串长度为8。此外,一些存储系统在一个突发串中连续发送一条高速缓冲存储器线(cache line)的数据,此时突发串长度更长(注意:对于一个给定的系统来说,突发串长度是固定的)。此外,这里所述的术语“字”可以根据需要和实际使用的系统而灵活地定义,例如,可以将一个字定义为具有一个或多个字节。当通过在计算系统中通常使用的并行总线来发送数据时,可以从时间和空间的角度将一个或多个突发串的数据组织为一个或多个矩阵,其中一个维度为空间维度,即并行总线并行发送的数据比特,另一维度为时间维度,其对应于在所述一个或多个突发串中连续发送的多个字。图1是示出根据本发明的、将通过并行总线发送的一个突发串的数据组织为一个矩阵的示例的图。
如图1所示,并行总线的宽度为n位,即,该并行总线具有n条传输线,并且可并行发送n位数据b0、b1、...、bn-1。I/O电路在一个突发串中一次连续发送m个字D0、D1、...、Dm-1,即突发串长度为m,并且这m个字具有在时间上连续的关系。在本说明书中,为简单起见,将字定义为具有与并行总线的宽度相同数目的位,即n位。此时,如果从空间和时间的角度来考虑所发送的数据,则可以通过以并行总线并行发送的一个字的n位数据(对应于n条传输线)为矩阵的n行(空间维度),并且以在时间上连续发送的m个字为矩阵的m列(时间维度),将I/O电路在一个突发串中连续发送的m个字组织为一个n×m矩阵。换言之,该矩阵的一行的元素为这m个字中通过并行总线中的对应的一条传输线依序发送的比特,该矩阵的一列的元素为通过该并行总线发送的对应的一个字的全部比特。除了将一个突发串的数据组织为一个n×m矩阵之外,还可以将一个突发串的数据组织为组成该n×m矩阵的多个其它大小的矩阵,例如,在上述示例中可以将所述数据组织为组成该n×m矩阵的2个n/2×m矩阵、4个n/2×m/2矩阵或多个其它大小的矩阵。除了图1所示的示例以外,还可以将多个突发串的数据组织成一个或多个矩阵。换言之,可以将k(k≥1)个突发串的数据组织为(p×q)个Li×Cj矩阵,其中k、p、q、i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ j = 1 q C j = k × m . 这里,n和(k×m)可以相等(这对应于方阵)或者可以不相等(这对应于长方矩阵)。
基于以上发现,设计了根据本发明的总线编码器和总线编码方法。
下面,将参照图2来描述根据本发明的总线编码器和总线解码器。图2是图示根据本发明实施例的总线编码器和总线解码器的框图。
如图2所示,发送器100与接收器200通过并行总线50互相连接,并且发送器100经由并行总线50而将数据发送到接收器200。
发送器100包括总线编码器101和连接到该总线编码器101的I/O电路102。总线编码器101用于在发送器100将数据发送给接收器200之前,对要发送的数据进行编码以便减少发送编码数据时的总线切换数目,并且将编码数据提供给I/O电路102。I/O电路102通过并行总线50与接收器200中的I/O电路相连接,并且用于将从总线编码器101接收的编码数据经由并行总线50发送给接收器200中的I/O电路。总线编码器101可以由执行下面所述的功能的硬件的组合实现,也可以由包含数据缓冲器的公知处理器(例如,CPU)或控制器结合用于执行本发明所述的功能的计算机软件来实现。
总线编码器101包括原始数据缓冲器1012、连接到原始数据缓冲器1012的编码部件1014、以及连接到编码部件1014和I/O电路102的编码数据缓冲器1016。
原始数据缓冲器1012用于存储要从发送器100发送给接收器200的原始数据,该原始数据可以是属于一个或多个突发串的多个连续的数据字。
原始数据缓冲器1012还用于存储矩阵组织信息和变换信息字位置信息,所述矩阵组织信息指示将被组织为矩阵的突发串的数目(即,k)以及将所述数目的突发串中的数据组织成的矩阵的数目(即,p×q)和各个矩阵的大小(即,Li×Cj,i=1,...,p,j=1,...,q),所述变换信息字位置信息指示变换信息字在所发送的编码数据中的位置。所述矩阵组织信息和变换信息字位置信息是由用户预定义的。应当注意:尽管变换信息字在所发送的编码数据中的位置是可变的,但是对于由发送器和接收器组成的一个给定的系统,该位置是固定的并且对于发送器和接收器来说是已知的。所述变换信息字用来指示所组织的各个矩阵的变换状态。应当认识到:可以根据不同的情况而给予变换信息字不同的定义。
此外,原始数据缓冲器1012还用于存储由用户预定义的变换表。在该变换表中预定义可用于变换所述矩阵的一种或多种矩阵变换模式以及将在变换信息字中使用的、用于指示矩阵的变换状态的一个或多个比特的特定组合。具体地,当将某种矩阵变换模式应用于一矩阵时,将变换信息字中的与该矩阵对应的位设置为在变换表中预定义的、指示与该矩阵变换模式对应的变换状态的特定比特组合,以便向接收器表明对该矩阵应用了所述矩阵变换模式,换句话说,以便向接收器表明所接收的对应矩阵是对其原始矩阵应用了所述矩阵变换模式的结果;反之,当变换信息字中与某一矩阵相对应的一位或多位与在变换表中预定义的比特组合相同时,这意味着该矩阵处于该比特组合所指示的变换状态,此时只需对该矩阵进行相应的逆变换即可获得原始矩阵。
图3(a)、图3(b)和图3(c)示出了根据本发明的变换表的示例。如图3(a)所示,在变换表302中预定义了一种可用的矩阵变换模式(即“转置”)以及两种比特组合。在本示例中,仅使用一个比特来指示变换状态,其中,比特“0”表示相应的矩阵处于被转置的状态,即,该矩阵是对另一矩阵进行转置变换的结果;比特“1”表示没有对相应的矩阵进行变换,即,相应的矩阵与原始矩阵相同。如图3(b)所示,在变换表304中预定义了一种可用的矩阵变换模式(即“偶数列反转”)以及两种比特组合。在本示例中,也使用一个比特来指示变换状态,其中,比特“0”表示相应的矩阵处于其偶数列被反转的状态,即,该矩阵是将另一矩阵的偶数列反转的结果;比特“1”表示没有对相应的矩阵进行变换,即,相应的矩阵与原始矩阵相同。如图3(c)所示,在变换表306中预定义了2种可用的矩阵变换模式(即“转置”和“偶数列反转”)以及3种比特组合,其中,比特组合“00”表示没有对相应的数据矩阵进行变换,比特组合“01”表示相应的数据矩阵处于被转置的状态,比特组合“10”表示相应的数据矩阵处于其偶数列被反转的状态。应当认识到,上述变换表仅仅是示例性的,而不是限制性的。实际上,除了转置变换和偶数列反转变换以外,还可以根据实际情况(例如,发送器通常发送的数据中的“1”和“0”的分布情况)和实际需要而在变换表中预定义或添加一种或多种其它可用变换模式。此外,用于指示变换状态的比特组合中的比特的数目可以为其它数值。并且,变换表的形式不限于图3(a)、3(b)和3(c)中图示的形式,而是可以采用其它形式,只要这些形式可以清楚地反映上述信息即可。
应当认识到:尽管在这里使用原始数据缓冲器1012来存储矩阵组织信息、变换信息字位置信息和变换表,但这不是限制性的,而是也可以将它们共同或分别存储在稍后描述的编码数据缓冲器1016或者编码部件1014能够访问的其它存储器(未示出)中。
回到图2,编码部件1014从原始数据缓冲器1012读取矩阵组织信息,并且根据在所述矩阵组织信息中预定义的突发串的数目k而从原始数据缓冲器1012依序读取k个突发串。然后,编码部件1014根据该矩阵组织信息而以上文所述的组织方式将所述突发串中的数据字组织为一个或多个矩阵。
具体地,如上所述,假设并行总线50的宽度为n位,突发串长度为m。编码部件1014从原始数据缓冲器1012中读取k个突发串的数据字,并且根据在矩阵组织信息中预定义的矩阵数目(p×q)和每个矩阵的大小(Li×Cj,i=1,...,p,j=1,...,q)而以上述组织方式将这k×m个数据字组织为(p×q)个Li×Cj矩阵,其中 Σ i = 1 p L i = n , Σ i = 1 q C j = k × m .
然后,编码部件1014从原始数据缓冲器1012读取预定义的变换表,并且确定可用变换模式。然后,它对于每个所述Li×Cj矩阵,检查在所述可用变换模式中是否存在能够减小该矩阵中的总线切换数目(即,发送该矩阵中的数据时的总线切换数目的总和)的变换模式以便确定该矩阵是否需要进行变换,并且当存在这样的变换模式时,确定该矩阵需要进行变换并且确定用于变换该矩阵的对应变换模式。
具体地,对于每个所述Li×Cj矩阵,编码部件1014依序选择所述可用变换模式中的每一种,并且检查所选择的变换模式是否能够减小该矩阵的总线切换数目。例如,编码部件1014可以利用所选择的变换模式变换该矩阵以获得变换矩阵,计算该变换矩阵中的各行的总线切换数目的总和以获得该变换矩阵的总线切换数目,然后将该总线切换数目与原始矩阵的总线切换数目进行比较。如果变换矩阵的总线切换数目大于或等于原始矩阵的总线切换数目,则所选择的变换模式不能减小所述总线切换数目,反之,如果变换矩阵的总线切换数目小于原始矩阵的总线切换数目,则所选择的变换模式能够减小所述总线切换数目。当确定所选择的变换模式能够减小所述总线切换数目时,编码部件1014确定该矩阵需要进行变换,并且将所选择的变换模式确定为用于变换该矩阵的对应变换模式,而不再继续检查其它变换模式;另一方面,当编码部件1014确定所选择的变换模式不能减小所述总线切换数目时,编码部件1014从所述可用变换模式中选择另一可用变换模式,并且重复上述检查步骤。以这一方式,编码部件1014依序检查所有可用变换模式,并且当找到能够减小该矩阵的总线切换数目的变换模式时停止该检查。然而,如果编码部件1014检查了所有可用变换模式但是没有发现能够减小该矩阵的总线切换数目的变换模式,则编码部件1014确定该矩阵不需要进行变换。可替换地,当编码部件1014找到能够减小该矩阵的总线切换数目的变换模式时,其记录该变换模式将所述总线切换数目减少的量,并且继续寻找在所述可用变换模式中是否存在其它能够减小该矩阵的总线切换数目的其它变换模式,而不是如上所述停止检查其它可用变换模式,以便找出能够减小该矩阵的总线切换数目的所有变换模式并且确定相应的减少量;然后,编码部件1014通过例如比较而选择使得该矩阵的总线切换数目减小得最多的变换模式作为用于变换该矩阵的对应变换模式。
例如,在采用图3(a)所示的变换表和将数据组织为一个n×m矩阵的情况下,编码部件1014读取变换表302,确定可用变换模式为转置变换,然后检查转置变换能否减小该n×m矩阵的总线切换数目。如果能,则确定该矩阵需要进行变换,并且将转置变换确定为用于变换该矩阵的对应变换模式;如果不能,则确定该矩阵不需要进行变换。例如,在采用图3(c)所示的变换表和将数据组织为一个n×m矩阵的情况下,编码部件1014读取变换表306,并且确定可用变换模式为转置变换和偶数列反转变换。然后,编码部件1014首先选择转置变换,检查转置变换能否减小该n×m矩阵的总线切换数目。如果能,则确定该矩阵需要进行变换,并且使用转置变换来变换该矩阵;如果不能,则编码部件1014检查偶数列反转变换是否能减小所述总线切换数目。如果能,则确定该矩阵需要进行变换,并且将偶数列反转变换确定为用于变换该矩阵的对应变换模式;如果不能,则由于仅有两种可用变换而确定该矩阵不需要进行变换。可替换地,当编码部件1014确定转置变换能够减小该矩阵的总线切换数目时,其继续检查偶数列反转变换是否能够减小所述总线切换数目,并且如果确定偶数列反转变换也能减小所述总线切换数目,则在这两种变换模式中选择使所述总线切换数目减少得最多的变换模式作为实际用于变换该矩阵的对应变换模式,否则将转置变换确定为用于变换该矩阵的变换模式。
接下来,当确定所述(p×q)个Li×Cj矩阵均不需要变换时,编码部件1014保持所述(p×q)个Li×Cj矩阵不变,而不对其进行任何处理。另一方面,当确定在所述(p×q)个Li×Cj矩阵中存在需要进行变换的矩阵并且确定了用于变换该矩阵的对应变换模式时,编码部件1014利用所确定的对应变换模式来分别变换所述需要进行变换的矩阵,并且将这些矩阵(即,原始矩阵)替换为相应的变换后的矩阵(不需要进行变换的矩阵保持不变)。然后,编码部件1014将确定不需要进行变换的矩阵(如果有的话)和所述经过替换的矩阵形成一个待发送的n×(k×m)矩阵。
然后,编码部件1014根据变换表产生用于指示每个所述Li×Cj矩阵是否进行了变换以及当进行了变换时使用的变换模式的变换信息字,并且根据预定义的附加信息字位置信息将该变换信息字作为额外的字附加到所述待发送的n×(k×m)矩阵上(例如,之前或之后),从而形成实际要经由I/O电路102发送给接收器200的编码矩阵。
具体地,编码部件1014首先产生一个变换信息字,然后根据变换表将该变换信息字中的、用于指示每个所述Li×Cj矩阵的变换状态的位分别设置为与该矩阵的变换状态相对应的比特组合。例如,在采用图3(a)所示的变换表302的情况下,在变换信息字中,用于指示未经变换的矩阵(即,不需要进行变换的矩阵)的变换状态的位被设置为1,而用于指示被转置的矩阵的变换状态的位被设置为0;在采用图3(c)所示的变换表306的情况下,在变换信息字中,用于指示未经变换的矩阵的变换状态的位被设置为“00”,用于指示被转置的矩阵的变换状态的位被设置为“01”,而用于指示偶数列被反转的矩阵的变换状态的位被设置为“10”。然后,编码部件1014从原始数据缓冲器1012中读取变换信息字位置信息,并且根据在该位置信息中预定义的附加信息字的位置而将该变换信息字作为额外的字附加到所述待发送的n×(k×m)矩阵之前或之后,以形成实际要发送给接收器200的编码矩阵。
应当注意:在变换信息字中分别用于指示各个矩阵的变换状态的位可基于可用变换模式的数目和所组织的矩阵的数目等因素而由用户在发送器(或编码部件)和接收器(或解码部件)中预定义,或者可以由编码部件和解码部件基于相同的分配规则而自动分配。例如,可以在编码部件和解码部件中将变换信息字的一个或多个预定位预定义为指示矩阵的变换状态的位,或者可以由编码部件和解码部件共同地将变换信息字的一个或多个位自动分配给某个矩阵以指示该矩阵的变换状态。此外,在预定义了用于指示矩阵变换状态的位之后,可以任意地设置该变换信息字中的剩余位(如果有的话),因为所述剩余位不具有特定的含义。然而,优选地,将所述剩余位设置为和在所述待发送的n×(k×m)矩阵中与该变换信息字相邻的数据矩阵的字的对应位(即,在并行总线的同一传输线上发送的相邻位)相同,以尽可能地减小由于附加该变换信息字而增加的总线切换数目。
此外,在上文中,对于将原始数据组织为多个矩阵的情况,编码部件1014仅产生一个公共的变换信息字。然而,本发明不限于此,而是也可以为所述多个矩阵的每一个分别产生一个附加信息字,然后将所产生的附加信息字附加在所述待发送的n×(k×m)矩阵之前或之后、或者在对应的矩阵之前或之后。这可以由用户在编码部件和解码部件中相应地预定义。
然后,编码部件1014将所形成的编码矩阵中的编码数据(即,该编码矩阵的元素)按照发送顺序存储到编码数据缓冲器1016中。
编码数据缓冲器1016用于依序存储从编码部件1014接收的编码数据。
发送器100以公知的方式将存储在编码数据缓冲器1016中的编码数据经由I/O电路102和并行总线50发送到接收器200。应当注意:由于I/O电路以突发串为单位来发送数据,因此当将变换信息字附加在一个或多个突发串的数据上时,可以使该I/O电路额外地发送一个字(当产生一个变换信息字时)或多个字(当产生相同数目的多个变换信息字时),以便将所述编码数据完整地发送给接收器200。
在上文中,在完成k个突发串的全部数据的编码之后,编码部件1014将所获得的编码数据存储在编码数据缓冲器1016中,然后,经由I/O电路依序发送这些编码数据。然而,本发明不限于此。在一些情况下,对于所述k个突发串,也可以在对当前数据进行编码的同时发送先前编码的编码数据,以减小由于对所述突发串的数据进行编码而导致的延迟时间。例如,在将k个突发串的数据组织为一个矩阵时,当需要对该矩阵进行变换时,可以在对当前列的数据进行变换的同时,将先前处理的列的数据依序发送给接收器,而不是完成对该矩阵的所有数据的处理之后再发送所述数据。这种变型可以被适当地扩展到其它组织矩阵的情况,并且也被包含在本发明的范围内。
下面,将参照图2来描述根据本发明实施例的总线解码器。
如图2所示,接收器200包括I/O电路201和连接到I/O电路201的总线解码器202。
I/O电路201用于接收从发送器100经由I/O电路102和并行总线50发送给接收器200的k个突发串的编码数据,并且将所述编码数据连续地存储在被包含在总线解码器202内的编码数据缓冲器2022中。
总线解码器202包括连接到I/O电路201的编码数据缓冲器2022、连接到编码数据缓冲器2022的解码部件2024、和连接到解码部件2024的原始数据缓冲器2026。该总线解码器可以由执行下面所述的功能的硬件的组合实现,也可以由包含数据缓冲器的公知处理器(例如,CPU)或控制器结合用于执行本发明所述的功能的计算机软件来实现。
编码数据缓冲器2022用于依序存储从I/O电路201接收的编码数据。
原始数据缓冲器2026用于存储从解码部件2024接收的解码数据。原始数据缓冲器2026还用于存储矩阵组织信息、变换信息字位置信息和变换表,所述信息和变换表与存储在原始数据缓冲器1012中的信息和变换表相同,因此,为简单起见,在这里省略对它们的详细描述。同样,应当认识到,尽管在这里使用原始数据缓冲器2026来存储矩阵组织信息、变换信息字位置信息和变换表,但这不是限制性的,而是也可以将它们共同或分别存储在编码数据缓冲器2022或者解码部件2024能够访问的其它存储器(未示出)中。
解码部件2024用于将所述编码数据解码以获得原始数据。
具体地,解码部件2024从编码数据缓冲器2022读取所接收的编码数据,从原始数据缓冲器2026中读取变换信息字位置信息,然后根据在该位置信息中预定义的变换信息字的位置而从所读取的编码数据中提取变换信息字。例如,当在所述位置信息中预定义的变换信息字的位置为在编码数据的末尾时,解码部件2024从所读取的编码数据中提取最后一个字作为变换信息字;当在所述位置信息中预定义的变换信息字的位置为在编码数据的开头时,解码部件2024从所读取的编码数据中提取第一个字作为变换信息字。
接下来,解码部件2024从原始数据缓冲器2026中读取矩阵组织信息,并且基于该矩阵组织信息中预定义的矩阵数目(即,p×q)和各矩阵的大小而以上文所述的矩阵组织方式将剩余的编码数据组织为(p×q)个Li×Cj矩阵,其中i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ j = 1 q C j = k × m . 由于存储在原始数据缓冲器2026中的矩阵组织信息与存储在原始数据缓冲器1012中的矩阵组织信息相同,并且编码部件1014和解码部件2024采用相同的矩阵组织方式,因此,解码部件2024组织的(p×q)个Li×Cj矩阵与上文所述的形成待发送的n×(k×m)矩阵的(p×q)个Li×Cj矩阵相同。
然后,解码部件2024从原始数据缓冲器2026中读取变换表,并且将变换信息字中指示各个矩阵的变换状态的一个或多个位与在变换表中预定义的比特组合进行比较,以确定各个矩阵的变换状态。如上所述,解码部件2024可以通过用户的预定义或基于分配规则的自动分配而获知在变换信息字中指示各个矩阵的变换状态的一个或多个位。
接下来,如果所述(p×q)个Li×Cj矩阵均没有被变换,则解码部件2024不对其进行任何处理。另一方面,如果在所述(p×q)个Li×Cj矩阵中存在进行过变换的矩阵,则解码部件2024对进行过变换的矩阵分别进行相应的逆变换,以获得其原始矩阵,并且将所述矩阵替换为其原始矩阵(没有进行过变换的矩阵保持不变)。
最后,解码部件2024将被确定为没有被变换的矩阵(如果有的话)和经过上述替换的矩阵形成为一个n×(k×m)矩阵(即,原始数据矩阵),并且将该n×(k×m)矩阵的数据作为原始数据依序存储在原始数据缓冲器2026中以供其它部件使用。
应当认识到:尽管在上文中使用单个部件(即编码部件)来将要发送的数据编码,但这仅仅是出于说明的目的,而不是限制性的。实际上,除了使用单独的编码部件以外,也可以使用包括多个单元的编码部件来实现上述功能。例如,如图4所示,可以使用包括组织单元4011、确定单元4012、变换单元4013、形成单元4014、产生单元4015和附加单元4016的编码部件401按照与上面相似的方式来将要发送的数据编码,其中,组织单元4011按照上面所述的方式将k个突发串的数据组织为(p×q)个Li×Cj矩阵;确定单元4012,对于每个所述Li×Cj矩阵,确定是否存在能够减少该矩阵的总线切换数目的变换模式,并且当存在能够减少该矩阵的总线切换数目的变换模式时确定该矩阵需要进行变换并且确定用于变换该矩阵的对应变换模式;变换单元4013对于确定需要进行变换的矩阵,利用所确定的用于变换该矩阵的对应变换模式对其进行变换,并且用变换后的矩阵替换所述需要进行变换的矩阵;形成单元4014将确定不需要进行变换的矩阵和经过所述替换的矩阵形成一个待发送的n×(k×m)矩阵;产生单元4015产生指示所述(p×q)个Li×Cj矩阵的变换状态的长度为n位的变换信息字,并且附加单元4016将所述变换信息字附加到所述待发送的n×(k×m)矩阵上以形成实际需要发送的编码矩阵。同样,也可以将上文所述的单个解码部件2024替换为由提取单元4021、组织单元4022、确定单元4023、逆变换单元4024和形成单元4025组成的解码部件402,其中,提取单元4021根据预定义的变换信息字位置信息而从编码数据中提取所述变换信息字;组织单元4022按照上述方式将编码数据中的剩余数据组织为(p×q)个Li×Cj矩阵;确定单元4023根据所述变换信息字确定每个所述Li×Cj矩阵的变换状态;逆变换单元4024根据所确定的每个所述Li×Cj矩阵的变换状态,对所述(p×q)个Li×Cj矩阵中被确定为变换的矩阵进行相应的逆变换并用逆变换后的矩阵替换所述被变换的矩阵,并且将被确定为未被变换的矩阵保持不变;形成单元4025将被确定为未被变换的矩阵和经过上述替换的矩阵形成一个n×(k×m)矩阵作为原始数据矩阵。当然,本领域技术人员也可以根据实际需要设计分别具有上述功能中的一种或多种的其它部件和/或这些部件的组合,只要这些部件能够共同实现上述数据编码和解码即可。此外,在上文中,在编码器和解码器中分别使用了两个单独的缓冲器,即原始数据缓冲器和编码数据缓冲器,然而,这不是限制性的,也可以将它们组合为一个缓冲器,或者分割为更多的缓冲器。
由于在将数据发送到I/O电路和总线之前,根据本发明的总线编码器选择性地对所述数据进行变换以减小其总线切换数目,因此I/O电路不需要进行过多的总线切换,从而降低了I/O功率。
下面,将结合图2和图5来描述根据本发明实施例的总线编码方法。图5是示出根据本发明实施例的总线编码方法的流程图。
如上所述,在发送和接收数据之前,已经分别在发送器100和接收器200中预先定义了相同的矩阵组织信息、变换信息字位置信息和变换表,并且它们分别被存储在原始数据缓冲器1012和2026中。为简单起见,在这里省略对上述信息和变换表的详细描述。
当存在要经由I/O电路102和并行总线50发送给接收器200的数据时,发送器100将该数据依序存储在原始数据缓冲器1012中。假设并行总线的宽度为n,突发串长度为m,其中n和m为自然数。
参照图5,在步骤S501中,编码部件1014从原始数据缓冲器1012读取矩阵组织信息,并且根据在所述矩阵组织信息中预定义的突发串的数目k(k为大于或等于1的自然数)而从原始数据缓冲器1012依序读取k个突发串,总共n×(k×m)个数据比特。
在步骤S502中,编码部件1014根据该矩阵组织信息中预定义的矩阵数目p×q(p和q为自然数)而以上文所述的矩阵组织方式将k个突发串中的数据字组织为(p×q)个Li×Cj矩阵,其中i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ j = 1 q C j = k × m .
在步骤S503中,编码部件1014从原始数据缓冲器1012读取预定义的变换表,并且确定在该变换表中预定义的、可以用来对所述(p×q)个Li×Cj矩阵进行矩阵变换的可用矩阵变换模式。
然后,在步骤S504中,编码部件1014选择所述(p×q)个Li×Cj矩阵中的一个矩阵,检查在所确定的可用变换模式中是否存在能够减小该矩阵的总线切换数目(即,发送该矩阵中的数据时的总线切换数目的总和)的变换模式,以便确定该矩阵是否需要进行变换。
当在步骤S504中确定不存在这样的变换时,编码部件1014进行到步骤S505,在该步骤中,其确定该矩阵不需要进行变换。反之,当在步骤S504中确定存在这样的变换时,编码部件1014进行到步骤S506,在该步骤中,其确定该矩阵需要进行变换,并且确定用于变换该矩阵的对应变换模式。稍后将详细描述步骤S504、S505和S506中的详细操作。
接下来,在步骤S507中,编码部件1014确定是否检查了所述(p×q)个Li×Cj矩阵中的全部矩阵。如果不是,则编码部件1014返回步骤S504,选择尚未被检查的另一矩阵,并且重复步骤S504-S506。另一方面,如果在步骤S507中确定检查了全部矩阵,则编码部件1014进行到步骤S508,在该步骤中,编码部件1014判断是否所述全部矩阵均不需要进行变换。
如果在步骤S508中确定全部矩阵均不需要进行变换,则在步骤S509中,编码部件1014保持所述(p×q)个Li×Cj矩阵不变,而不对其进行任何处理。反之,当在步骤S508中确定存在需要变换的矩阵,则在步骤S510中,编码部件1014利用所确定的对应变换模式来分别变换各个需要变换的矩阵,然后将所述各个需要变换的矩阵(即,各个原始矩阵)分别替换为相应的变换后的矩阵,并且将所述(p×q)个Li×Cj矩阵中不需要变换的矩阵(如果有的话)保持不变。然后,在步骤S511中,编码部件1014将由确定不需要进行变换的矩阵(注意:当确定所有矩阵都需要进行变换时,其数目为0)和经过变换的矩阵(注意:当确定所有矩阵均不需要进行变换时,其数目为0)组成的(p×q)个Li×Cj矩阵形成一个待发送的n×(k×m)矩阵。
接下来,在步骤S512中,编码部件1014根据所述变换表,产生用于指示每个所述Li×Cj矩阵是否进行了变换以及当进行了变换时使用的变换模式的变换信息字。具体地,编码部件1014首先产生一个变换信息字,然后根据变换表,将该变换信息字中用于指示每个所述Li×Cj矩阵的变换状态的位分别设置为与该矩阵的变换状态相对应的比特组合。如上所述,在变换信息字中分别用于指示各个矩阵的变换状态的位可基于可用变换模式的数目和所组织的矩阵的数目等因素而由用户在发送器(或编码部件)和接收器(或解码部件)中预定义,或者可以由编码部件和解码部件基于相同的分配规则而自动分配。并且,在预定义了用于指示矩阵变换状态的位之后,可以任意地设置该变换信息字中的剩余位,因为所述剩余位不具有特定的含义;然而,优选地,将所述剩余位设置为和待发送的n×(k×m)矩阵中与该变换信息字相邻的字的对应位(即,在并行总线的同一传输线上发送的相邻位)相同,以尽可能地减小由于附加该变换信息字而增加的总线切换数目。
然后,在步骤S513中,编码部件1014从原始数据缓冲器1012中读取变换信息字位置信息,并且根据在该位置信息中预定义的附加信息字的位置而将该变换信息字作为额外的字附加到待发送的n×(k×m)矩阵上,以形成实际要经由I/O电路102和总线50发送给接收器200的编码矩阵。可以理解,由于附加了一个变换信息字,因此该编码数据矩阵具有k×(m+1)列。此外,如上所述,对于将原始数据组织为多个矩阵的情况,编码部件1014也可以为每个矩阵产生一个附加信息字,然后将所产生的附加信息字附加在所述待发送的n×(k×m)矩阵之前或之后、或者附加在组成所述待发送的n×(k×m)矩阵的每个矩阵之前或之后。这可以由用户在编码部件和解码部件中相应地预定义。
接下来,在步骤S514中,编码部件1014将所形成的编码矩阵中的编码数据(即,该矩阵的元素)按照发送顺序存储到编码数据缓冲器1016中。
下面,将参照图6来详细描述步骤S504、S505和S506中的详细操作。
参照图6,在步骤S5041中,编码部件1014从所述(p×q)个Li×Cj矩阵中选择一个矩阵。然后,在步骤S5042中,编码部件1014从所确定的可用矩阵变换模式中选择一种矩阵变换模式,并且在步骤S5043中确定该变换模式是否能够减小该矩阵的总线切换数目。例如,编码部件1014可以利用所选择的变换模式变换该矩阵以获得变换矩阵,计算该变换矩阵中的各行的总线切换数目的总和以获得该变换矩阵的总线切换数目,然后将该变换矩阵的总线切换数目与原始矩阵的总线切换数目进行比较。如果变换矩阵的总线切换数目大于或等于原始矩阵的总线切换数目,则所选择的变换模式不能减小所述总线切换数目,反之,如果变换矩阵的总线切换数目小于原始矩阵的总线切换数目,则所选择的变换模式能够减小所述总线切换数目。此外,编码部件1014也可以采用其它本领域公知的方式来进行上述确定。
如果在步骤S5043中确定所选择的变换模式能够减小所述总线切换数目,则在步骤S506中,编码部件1014确定所述矩阵需要进行变换,并且将当前选择的变换模式确定为用于变换该矩阵的对应变换模式。另一方面,当在步骤S5043中确定所选择的变换模式不能减小所述总线切换数目时,则编码部件1014进行到步骤S5044,在该步骤中,编码部件1014确定是否检查了所有可用变换模式。如果在步骤S5044中确定已经检查了所有变换模式,则在步骤S505中,编码部件1014确定该矩阵不需要进行变换。反之,如果尚未检查所有变换模式,则编码部件1014返回步骤S5042,选择尚未被检查的另一变换模式,并且重复步骤S5042和S5043。
如上所述,当在步骤S5043中确定所选择的变换模式能够减小所述总线切换数目时,编码部件1014将该变换模式确定为用于变换该矩阵的对应变换模式,而不再继续检查其余可用变换模式。然而,可替换地,当在步骤S5043中确定所选择的变换模式能够减小所述总线切换数目时,编码部件1014记录该变换模式将所述总线切换数目减少的量,并且继续检查其它可用变换模式能否减小该矩阵的总线切换数目,而不是如上所述停止检查其它可用变换模式,以便找出能够减小总线切换数目的所有变换模式并且确定相应的减少量;然后,编码部件1014通过例如比较来选择使得所述总线切换数目减少得最多的变换模式作为用于变换该矩阵的对应变换模式。
应当认识到:尽管在上面给出了一种执行根据本发明实施例的总线编码方法的各个步骤的顺序,但是也可以在不背离本发明的精神和范围的情况下适当地改变执行这些步骤的顺序。例如,可以先读取变换表以获取可用的变换模式,然后再读取要发送的数据并将其组织为(p×q)个Li×Cj矩阵。此外,在上文中,对于所述(p×q)个Li×Cj矩阵中的全部矩阵确定是否存在能够减小其总线切换数目的变换模式,然后利用所确定的对应变换模式分别对需要变换的矩阵进行变换;然而,也可以在对于每个Li×Cj矩阵确定存在能够减小其总线切换数目的变换模式时立即利用该变换模式来变换所述矩阵。
在完成上述总线编码之后,发送器100将存储在编码数据缓冲器1016中的编码数据经由I/O电路102和总线50以突发串的形式发送到接收器200。如上所述,在附加了变换信息字之后,可以使该I/O电路额外地发送一个字(当产生一个变换信息字时)或多个字(当产生相同数目的多个变换信息字时),以便将所述编码数据完整地发送给接收器200。同样,如上所述,在根据本发明实施例的总线编码方法中,不仅可以在完成所述k个突发串的全部数据的编码之后发送所获得的编码数据,还可以在对当前数据进行编码的同时发送先前编码的数据,以减小由于对突发串的数据进行编码而导致的延迟时间。
下面,将参照图7来描述根据本发明实施例的总线解码方法。图7是示出根据本发明实施例的总线解码方法的流程图。
如上所述,在接收数据之前,已经在接收器200中预先定义了与发送器100相同的矩阵组织信息、变换信息字位置信息和变换表,并且将它们存储在原始数据缓冲器2026中。为简单起见,在这里省略对它们的详细描述。
接收器200接收从发送器100发送的编码数据,并且将所接收的编码数据依序存储在编码数据缓冲器2022中。
参照图7,在步骤S701中,解码部件2024从编码数据缓冲器2022中读取所接收的编码数据。在步骤S702中,解码部件2024从原始数据缓冲器2026中读取变换信息字位置信息,然后根据在该位置信息中预定义的变换信息字的位置而从所读取的编码数据的所述位置处提取变换信息字。
接下来,在步骤S703中,解码部件2024从原始数据缓冲器2026中读取矩阵组织信息,并且基于该矩阵组织信息中预定义的矩阵数目(p×q)和各矩阵的大小而以上文所述的矩阵组织方式将提取变换信息字之后剩余的编码数据组织为(p×q)个Li×Cj矩阵,其中i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ j = 1 q C j = k × m . 由于存储在原始数据缓冲器2026中的矩阵组织信息与存储在原始数据缓冲器1012中的矩阵组织信息相同,并且编码部件1014和解码部件2024采用相同的矩阵组织方式,因此,解码部件2024组织的(p×q)个Li×Cj矩阵与编码部件1014获得的形成所述待发送的n×(k×m)矩阵的(p×q)个Li×Cj矩阵相同。
然后,在步骤S704中,解码部件2024从原始数据缓冲器2026中读取变换表,并且将所提取的变换信息字中指示所述(p×q)个Li×Cj矩阵中的每个矩阵的变换状态的一个或多个位与在变换表中预定义的比特组合进行比较,以确定各个矩阵的变换状态。如上所述,解码部件2024可以通过用户的预定义或基于分配规则的自动分配而获知在变换信息字中指示各个矩阵的变换状态的一个或多个位。
接下来,在步骤S705中,解码部件2024确定是否所述(p×q)个Li×Cj矩阵均没有被变换。如果在步骤S705中确定所述(p×q)个Li×Cj矩阵均未被变换,则在步骤S706中,解码部件2024保持所述(p×q)个Li×Cj矩阵不变而不对其进行任何处理。另一方面,如果在步骤S705中确定在所述(p×q)个Li×Cj矩阵中存在进行过变换的矩阵,则在步骤S707中,解码部件2024根据变换信息字中的比特组合的指示而对进行过变换的矩阵分别进行相应的逆变换以获得其原始矩阵,并且将所述进行过变换的矩阵替换为逆变换后的矩阵(即其原始矩阵),同时,解码部件2024将所述(p×q)个Li×Cj矩阵中被确定为没有进行过变换的矩阵(如果有的话)保持不变。
然后,在步骤S708中,解码部件2024将被确定为没有进行过变换的矩阵(如果有的话)和经过上述替换的矩阵形成为一个n×(k×m)矩阵(即,原始数据矩阵)。最后,在步骤S709中,解码部件2024将该n×(k×m)矩阵的数据作为原始数据依序存储在原始数据缓冲器2026中以供其它部件使用。
在上面描述了根据本发明实施例的总线编码方法和总线解码方法的各个步骤,然而,应当认识到:这些步骤并不是强制性的,而是可以对于不同的系统(发送器和接收器)选择性地省略其中一些步骤。例如,当将要发送的数据组织为1个矩阵时,可以省略图5所示的编码方法中的步骤S507和S508以及图7所示的解码方法中的步骤S705并适应性地调整其余步骤;当所确定的可用变换模式只有1种时,可以省略图6所示的步骤S5044并适应性地调整其余步骤。本领域技术人员能够理解:这些变化均被包含在本发明的范围内。
下面,将结合若干示例来示例性地说明根据本发明实施例的总线编码方法和总线解码方法。
图8示出了用于例示根据本发明实施例的总线编码方法和总线解码方法的第一示例。在图8中,向下的箭头表示编码过程,向上的箭头表示解码过程。
在图8所示的示例中,并行总线宽度n为8,突发串长度m为8。如上所述,在这里将字的长度定义为等于并行总线的宽度。在矩阵组织信息中预定义的突发串数目k和矩阵数目(p×q)均为1,预定义的变换表为变换表800,在变换信息字位置信息中预定义的变换信息字的位置为编码数据的末尾,并且将变换信息字的最低位用于指示矩阵的变换状态。上述信息均被预定义在编码部件1014和解码部件2024中。
首先,编码部件1014从原始数据缓冲器1012读取矩阵组织信息,确定预定义的突发串数目k为1,并且从原始数据缓冲器1012读取1个突发串,总共64个比特。然后,编码部件1014根据矩阵组织信息预定义的矩阵数目1而以上文所述的矩阵组织方式将所述一个突发串中的数据字组织为一个8×8矩阵801,此时,L1=8,C1=8。
接下来,编码部件1014从原始数据缓冲器1012读取预定义的变换表800,并且确定在其中预定义的可用变换模式为转置变换。然后,编码部件1014检查转置变换是否能够减小该8×8矩阵801的总线切换数目。由于转置变换能够减小图7所示的矩阵801的总线切换数目,因此,编码部件1014确定该矩阵需要进行变换,将转置变换确定为用于变换该矩阵的对应矩阵,并且使用转置变换来变换该矩阵,从而获得变换矩阵802。
然后,编码部件1014根据变换表800产生用于指示该矩阵是否进行了变换以及当进行变换时使用的矩阵变换模式的变换信息字803。具体地,编码部件1014首先产生一个变换信息字。由于矩阵801被转置,因此编码部件1014根据变换表中指示转置变换的比特组合“0”而将变换信息字的最低位设置为0,以表明该矩阵被转置或者接收器接收到的对应矩阵是对其原始矩阵进行转置的结果,然后将变换信息字的其余位设置为与该变换信息字相邻的字(D7)中的对应位(在同一传输线上依序发送的位)相同,从而得到变换信息字803“01010100”。如上所述,如此设置所述其余位使得能够尽可能地减少减小了由于附加该变换信息字而增加的总线切换数目。接下来,编码部件1014根据变换信息字位置信息而将变换信息字作为额外的列附加到矩阵802之后,从而形成8×9编码数据矩阵804。最后,编码部件1014将编码数据矩阵804中的编码数据按照先前读取它们的顺序依序存储在编码数据缓冲器1016中。
当接收到发送器100发送的上述编码数据时,接收器200将该编码数据存储在编码数据缓冲器2022中。
下面描述该示例的解码过程。
解码部件2024从编码数据缓冲器2022中读取所接收的72(=8×9)个编码数据。然后,解码部件2024从原始数据缓冲器2026中读取变换信息字位置信息,确定变换信息字被附加在该编码数据末尾,从而提取最后8位数据作为变换信息字803,即“01010100”。接下来,解码部件2024从原始数据缓冲器2026中读取矩阵组织信息,并且基于该矩阵组织信息中预定义的矩阵数目“1”而以上文所述的矩阵组织方式将剩余的64个数据比特组织为一个8×8矩阵,即矩阵802。
然后,解码部件2024读取变换表800,将变换信息字的最低位的“0”与变换表的比特组合进行比较,以确定该矩阵的变换状态。由于在变换表中将“0”预定义为表示转置变换,因此,解码部件2024确定该矩阵是对其原始矩阵进行了转置变换的结果,从而再次对其进行转置并且获得其原始矩阵801。最后,解码部件2024将原始矩阵801中的数据依序存储在原始数据缓冲器2026中以供其它部件使用。注意,在本示例中,由于只有一个矩阵,因此可以在编码和解码过程中省略所述替换和形成操作。
在本示例中,原始数据(即数据矩阵801)的总线切换数目为7×8=56次,而编码数据(即数据矩阵804)的总线切换数目为1次,因此,显著减小了I/O电路中的总线切换数目,从而显著减小了I/O功率。
在本示例中仅使用转置变换来对由原始数据组成的矩阵进行变换。当编码器将要发送的数据被组织为方阵时,可以使用这种变换模式。据统计,当仅使用转置变换作为变换表中的可用变换模式时,对于随机产生的各种样式的数据,平均能够将总线切换数目减少19%。因而,对于将数据组织为方阵的情况,转置变换具有良好的效果。
图9示出了用于例示根据本发明实施例的总线编码方法和总线解码方法的第二示例。在图9中,向下的箭头表示编码过程,向上的箭头表示解码过程。在该示例中,并行总线宽度n为8,突发串长度m为6,预定义的突发串数目k和矩阵数目p×q均为1,预定义的变换信息字的位置为编码数据的末尾,并且将变换信息字的最低位用于指示矩阵的变换状态。此外,预定义的变换表为变换表900,并且可用变换模式为偶数列反转变换。图9所示的示例的编码过程和解码过程与图8所示的示例相似,因此在这里省略对它们的详细描述,而仅仅在图9中示出各个阶段的结果。通过比较原始矩阵901和编码数据矩阵904可知,根据本发明实施例的总线编码方法将该数据的总线切换数目从40减少为1。在本示例中使用的偶数列反转变换适用于任何大小的矩阵。此外,在本示例中,除了在处理了矩阵901的全部数据之后再发送编码数据之外,还可以在处理一列数据的同时发送先前处理的列的数据。例如,可以在对第二列数据进行偶数列反转的同时将第一列数据发送给接收器,而不是在处理了全部6列数据并且附加了变换信息字之后再依序发送这7列的数据,由此,能够减小由于对所述数据进行处理而导致的延迟时间。
在第一和第二示例中,将原始数据组织为一个矩阵。下面给出将原始数据组织为多个矩阵的示例。
图10示出了用于例示根据本发明实施例的总线编码方法和总线解码方法的第三示例。在图10中,向下的箭头表示编码过程,向上的箭头表示解码过程。
在图10的示例中,并行总线宽度n为8,突发串长度m为8。在矩阵组织信息中预定义的突发串数目k为1、所组织的矩阵的数目p×q为2×2=4且每个矩阵的大小为4×4,预定义的变换表为变换表1000,在变换信息字位置信息中预定义的变换信息字的位置为编码数据的末尾,并且将变换信息字的8位预定义为按照从低位到高位的顺序而两两地用于所组织的4个矩阵。
下面描述该示例的编码过程。
首先,编码部件1014从原始数据缓冲器1012读取矩阵组织信息,并且根据其中预定义的突发串数目k=1而读取1个突发串,总共64个比特。然后,编码部件1014根据该矩阵组织信息中预定义的矩阵数目4和各矩阵的大小而以上述矩阵组织方式将该突发串的数据组织为4个4×4矩阵10011、10012、10013和10014,如图10上部所示。此时,Li和Cj(i=1,2;j=1,2)均为4。
然后,编码部件1014从原始数据缓冲器1012读取预定义的变换表,并且确定可用变换模式为转置变换和偶数列反转变换。接下来,编码部件1014依序选择这4个矩阵中的每一个,并且检查在所述可用变换模式中是否存在能够减小该矩阵的总线切换数目的变换模式。具体地,编码部件1014选择矩阵10011,确定转置变换是否能够减小该矩阵的总线切换数目。由于转置变换能够减小矩阵10011的总线切换数目,因此总线部件1014确定矩阵10011需要进行变换,并且将转置变换确定为用于变换该矩阵的对应变换模式。然后,编码部件1014选择矩阵10012,并且通过上述检查确定需要对其进行偶数列反转变换。接下来,编码部件1014选择矩阵10013,并且确定转置变换能否减小其总线切换数目。在得到否定答案之后,编码部件1014确定偶数列反转能否减小其总线切换数目,并且仍然得到否定答案。由于变换表仅预定义了两种可用变换,因此编码部件1014确定矩阵10013不需要进行变换。然后,类似地,编码部件1014确定需要对矩阵10014进行转置变换。
接下来,编码部件1014对矩阵10011和10014进行转置变换以分别获得变换矩阵10021和10024,对矩阵10012进行偶数列反转变换以获得变换矩阵10022,并且保持矩阵10013不变而将直接作为矩阵10023,由此,原始矩阵10011、10012和10014被替换为变换矩阵10021、10022和10024。然后,编码部件1014将变换矩阵10021、10022、10023和10024形成为待发送的8×8矩阵,如图10中部所示。
然后,编码部件1014根据变换表1000产生用于指示这4个矩阵的变换状态的变换信息字1001。具体地,编码部件1014首先产生一个变换信息字。然后,编码部件1014根据各个矩阵的变换状态和变换表来设置该变换信息字的相应位。由于在变换表1000中,“00”表明矩阵未被改变,“01”表示矩阵被转置,“10”表示矩阵的偶数列被反转,因此变换信息字1001从高位到低位被设置为“10000110”。
接下来,编码部件1014读取变换信息字位置信息,并根据该信息而将变换信息字1001作为额外的列附加到所述待发送的8×8矩阵之后,从而形成实际需要发送的8×9编码数据矩阵,如图10下部所示。
最后,编码部件1014将该编码数据矩阵中的编码数据依序存储到编码数据缓冲器1016中。
发送器100将所述编码数据经由I/O电路102和总线50发送给接收器200。接收器200经由I/O电路201接收该编码数据,并且将其依序存储在编码数据缓冲器2022中。
下面描述该示例的解码过程。
首先,解码部件2024读取所述编码数据(共72比特)。然后,解码部件2024从原始数据缓冲器2026中读取变换信息字位置信息,确定变换信息字被附加在该编码数据末尾,从而提取最后8位数据(即“10000110”)作为变换信息字1001。
接下来,解码部件2024从原始数据缓冲器2026中读取矩阵组织信息,并且基于在其中预定义的矩阵数目“4”和每个矩阵的大小而以与编码部件1014相同的矩阵组织方式将剩余的64比特组织为4个4×4矩阵。显然,所组织的这4个矩阵即为矩阵10021-10024。
然后,解码部件2024从原始数据缓冲器2026中读取变换表1000,并且分别将变换信息字中指示这4个矩阵的变换状态的位依序与在变换表1000中的比特组合进行比较,以确定各个矩阵的变换状态。在本示例中,解码部件2024确定对矩阵10021和10024进行了转置变换,对矩阵10022进行了偶数列反转变换,而没有对矩阵10023进行变换。
接下来,解码部件2024对矩阵10021和10024进行转置变换,对矩阵10022进行偶数列反转变换,由此将矩阵10021、10022和10024分别替换为其原始矩阵10011、10012和10014,并且保持矩阵10023不变而直接将其作为矩阵10013。然后,解码部件2024将原始矩阵10011-10014形成为一个8×8原始矩阵,并且将该原始矩阵的数据依序存储在原始数据缓冲器2026中以供其它部件使用。
在本示例中,原始数据的总线切换数目为51,实际发送的数据的总线切换数目为5,因此总线切换数目被显著减小。这种方法可被应用于任何总线宽度为n、突发串长度为m、并且n为m的倍数的系统。
在上面的示例中,将1个突发串的数据组织为一个或多个矩阵,并且将变换信息字定义为指示各个矩阵的变换状态。然而,也可以将多个突发串的数据组织为一个或多个矩阵,并且/或者给予变换信息字不同的定义。
图11示出了用于例示根据本发明实施例的总线编码方法和总线解码方法的第四示例。在该示例中,将4个突发串的数据组织为1个矩阵。
在该示例中,并行总线宽度n为32,突发串长度m为8。在矩阵组织信息中预定义的突发串数目k为4、所组织的矩阵的数目p×q为1,并且将变换信息字预定义为指示所组织的矩阵中的每一列的变换状态,而不是如先前所述的所组织的矩阵的变换状态。此外,预定义的变换表为变换表1100,在其中预定义的变换模式为:如果当前列(当前要发送的字)与前一列(先前发送的字)的汉明(hamming)距离大于总线宽度的一半(16=32/2),则反转当前列。
编码部件1014从原始数据缓冲器1012读取矩阵组织信息,确定其中预定义的突发串数目k为4,并且从原始数据缓冲器1012读取4个突发串。然后,编码部件1014根据预定义的矩阵数目1而以上文所述的矩阵组织方式将这4个突发串组织为一个32×32矩阵1101。接下来,编码部件1014对矩阵1101进行变换以产生变换矩阵1102,产生变换信息字1103,其每一位分别表示对应的矩阵1102的一列的变换状态,并且将该变换信息字1103附加在变换矩阵1102之前以产生编码数据矩阵1104。由于上述编码过程以及随后的解码过程与前述示例相似,因此为简单起见而省略其详细描述。
在本示例中,原始数据的总线切换数目为992,实际发送的数据的总线切换数目为16,因此总线切换数目被显著减小。这种方法可被应用于任何总线宽度为n、突发串长度为m、并且n为m的倍数的系统。
如上所述,根据本发明实施例的总线编码器和总线编码方法不仅适用于数据总线,还适用于地址总线。其通过在将数据发送给I/O电路和总线之前选择性地对所述数据进行变换,使得实际发送的数据的总线切换数目显著减小,从而减小I/O功率以及整个计算系统的功率,并且使处理器功率和I/O功率更加平衡。
此外,通过在变换表中定义多种可用变换模式,与仅定义一种可用变换模式的情况相比,可以提供更多的选择来变换所述数据,从而取得更好的效果。而且,在这一情况下,通过将数据组织为多个矩阵,可以对每个矩阵应用不同的变换,并且所应用的变换可以是使该矩阵的总线切换数目减小得最多的变换,从而取得比将所述数据仅组织为一个矩阵的情况更好的效果。
在上文中,在发送器和接收器中预定义变换表、矩阵组织信息、变换信息字位置信息以及其它信息,这可以通过在发送器和接收器之间制定共同的协议并且在该协议中预定义所述信息来实现。
此外,在本发明中,通过将变换信息字附加在要发送的数据上而消除了对于额外的信号线的需要。然而,这不是限制性的,而某些情况下,例如在不需要考虑兼容性的情况下,也可以使用额外的信号线来单独地发送变换信息字,而不将其附加在要发送的数据上。
尽管已经在上面示出和描述了本发明的实施例,本领域技术人员应当理解,在不背离权利要求及其等价物中限定的本发明的范围和精神的情况下,可以对所述实施例做出各种形式和细节上的变化。

Claims (18)

1.一种对经由并行总线以突发串方式发送的数据进行编码的方法,其中并行总线宽度为n位,每个突发串包括m个数据字,m和n为自然数,该方法包括:
组织步骤,将k个所述突发串的数据组织为(p×q)个Li×Cj矩阵,其中k、p、q、i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ j = 1 q C j = k × m ;
确定步骤,对于每个所述Li×Cj矩阵,确定是否存在能够减少该矩阵的总线切换数目的变换模式,并且当存在能够减少该矩阵的总线切换数目的变换模式时确定该矩阵需要进行变换并且确定用于变换该矩阵的对应变换模式;
变换步骤,对于确定需要进行变换的矩阵,利用所确定的用于变换该矩阵的对应变换模式对其进行变换,并且用变换后的矩阵替换所述确定需要进行变换的矩阵;
形成步骤,将确定不需要进行变换的矩阵和经过替换的矩阵形成一个待发送的n×(k×m)矩阵;
产生步骤,产生指示所述(p×q)个Li×Cj矩阵的变换状态的长度为n位的变换信息字;以及
附加步骤,将所述变换信息字附加到所述待发送的n×(k×m)矩阵以形成实际需要发送的编码矩阵。
2.如权利要求1所述的方法,其中,由所述(p×q)个Li×Cj矩阵形成的n×(k×m)矩阵的列是所述k个突发串中的(k×m)个数据字之一,该n×(k×m)矩阵的行是所述(k×m)个数据字中经由并行总线的同一传输线依序发送的位。
3.如权利要求1所述的方法,其中,对于每个所述Li×Cj矩阵,所述确定步骤包括以下步骤:
从一种或多种预定变换模式中选择一种变换模式,并且检查该变换模式是否能够减少所述矩阵的总线切换数目;
当该变换模式能够减少所述矩阵的总线切换数目时,确定该矩阵需要进行变换,并且将该变换模式确定为用于变换该矩阵的对应变换模式;以及
当该变换模式不能减少所述矩阵的总线切换数目时,从所述一种或多种预定变换模式中选择另一变换模式,并且对该另一变换模式重复上述检查步骤,直到找到能够减少所述矩阵的总线切换数目的变换模式、或者确定所有变换模式均不能减少所述矩阵的总线切换数目从而确定所述矩阵不需要进行变换为止。
4.如权利要求1所述的方法,其中,对于每个所述Li×Cj矩阵,所述确定步骤包括以下步骤:
依序检查一种或多种预定变换模式中的每一种是否能够减少所述矩阵的总线切换数目,并且当其能够减少所述总线切换数目时,记录该变换模式产生的所述矩阵的总线切换数目的减少量;以及
在检查了所有变换模式之后,如果存在能够减少所述矩阵的总线切换数目的变换模式,则在这些变换模式中选择所产生的减少量最大的变换模式作为用于变换所述矩阵的对应变换模式,否则确定所述矩阵不需要进行变换。
5.如权利要求3-4之一所述的方法,其中,所述一种或多种预定变换模式至少包括转置变换或偶数列反转变换。
6.如权利要求3-4之一所述的方法,其中,所述一种或多种预定变换模式是在变换表中预定义的,并且在该变换表中还预定义了指示矩阵的变换状态的比特组合,并且其中,在产生步骤中,根据每个所述Li×Cj矩阵的变换状态而将变换信息字中与该矩阵对应的位设置为在变换表中预定义的与该变换状态相对应的比特组合。
7.如权利要求6所述的方法,其中,所述产生步骤还包括:
将变换信息字中未被用于指示变换状态的位设置为和在所述待发送的n×(k×m)矩阵中与该变换信息字相邻的列中的对应位相同。
8.如权利要求1-4之一所述的方法,其中,根据预定义的变换信息字位置信息而将所述变换信息字附加在所述待发送的n×(k×m)矩阵之前或之后。
9.一种对经由并行总线以突发串方式发送的数据进行编码的编码器,其中并行总线宽度为n位,每个突发串包括m个数据字,m和n为自然数,该编码器包括:
组织单元,将k个所述突发串的数据组织为(p×q)个Li×Cj矩阵,其中k、p、q、i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ j = 1 q C j = k × m ;
确定单元,对于每个所述Li×Cj矩阵,确定是否存在能够减少该矩阵的总线切换数目的变换模式,并且当存在能够减少该矩阵的总线切换数目的变换模式时确定该矩阵需要进行变换并且确定用于变换该矩阵的对应变换模式;
变换单元,对于确定需要进行变换的矩阵,利用所确定的用于变换该矩阵的对应变换模式对其进行变换,并且用变换后的矩阵替换所述确定需要进行变换的矩阵;
形成单元,将确定不需要进行变换的矩阵和经过替换的矩阵形成一个待发送的n×(k×m)矩阵;
产生单元,产生指示所述(p×q)个Li×Cj矩阵的变换状态的长度为n位的变换信息字,和
附加单元,将所述变换信息字附加到所述待发送的n×(k×m)矩阵以形成实际需要发送的编码矩阵。
10.如权利要求9所述的编码器,其中,由所述(p×q)个Li×Cj矩阵形成的n×(k×m)矩阵的列是所述k个突发串中的(k×m)个数据字之一,该n×(k×m)矩阵的行是所述(k×m)个数据字中经由并行总线的同一传输线依序发送的位。
11.如权利要求9所述的编码器,其中,当对于每个所述Li×Cj矩阵确定是否存在能够减少该矩阵的总线切换数目的变换模式时,所述确定单元:
从一种或多种预定变换模式中选择一种变换模式,并且检查该变换模式是否能够减少所述矩阵的总线切换数目;
当该变换模式能够减少所述矩阵的总线切换数目时,确定该矩阵需要进行变换,并且将该变换模式确定为用于变换该矩阵的对应变换模式;以及
当该变换模式不能减少所述矩阵的总线切换数目时,从所述一种或多种预定变换模式中选择另一变换模式,并且对该变换模式重复上述检查步骤,直到找到能够减少所述矩阵的总线切换数目的变换模式、或者确定所有变换模式均不能减少所述矩阵的总线切换数目从而确定所述矩阵不需要进行变换为止。
12.如权利要求9所述的编码器,其中,当对于每个所述Li×Cj矩阵确定是否存在能够减少该矩阵的总线切换数目的变换模式时,所述确定单元:
依序检查一种或多种预定变换模式中的每一种是否能够减少所述矩阵的总线切换数目,并且当其能够减少所述矩阵的总线切换数目时,记录该变换模式产生的所述矩阵的总线切换数目的减少量;以及
当检查了所有变换模式之后,如果存在能够减少所述矩阵的总线切换数目的变换模式,则在这些变换模式中选择所产生的减少量最大的变换模式作为用于变换所述矩阵的对应变换模式,否则确定所述矩阵不需要进行变换。
13.如权利要求11-12之一所述的编码器,其中,所述一种或多种预定变换模式至少包含转置变换或偶数列反转变换。
14.如权利要求11-12之一所述的编码器,还包括:
存储单元,用于存储变换表,其中,在该变换表中预定义所述一种或多种可用变换模式、以及指示矩阵的变换状态的比特组合,并且其中,
所述产生单元根据每个所述Li×Cj矩阵的变换状态而将变换信息字中与该矩阵对应的位设置为在变换表中预定义的与该变换状态相对应的比特组合。
15.如权利要求14所述的编码器,其中,所述产生单元还将变换信息字中未被用于指示变换状态的位设置为和在待发送的n×(k×m)矩阵中与该变换信息字相邻的列中的对应位相同。
16.如权利要求9-12之一所述的编码器,其中,所述附加单元根据预定义的变换信息字位置信息而将所述变换信息字附加在所述待发送的n×(k×m)矩阵之前或之后。
17.一种用于将经由并行总线发送的编码数据解码的方法,其中并行总线宽度为n位,所述编码数据包含长度为n位的变换信息字和k个突发串的数据,每个突发串包含m个数据字,k、m和n为自然数,该方法包括以下步骤:
提取步骤,根据预定义的变换信息字位置信息而从编码数据中提取所述变换信息字;
组织步骤,根据预定义的矩阵数目和各个矩阵的大小而将编码数据中的剩余数据组织为(p×q)个Li×Cj矩阵,其中p、q、i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ j = 1 q C j = k × m ;
确定步骤,根据所述变换信息字确定每个所述Li×Cj矩阵的变换状态;
逆变换步骤,根据所确定的每个所述Li×Cj矩阵的变换状态,对所述(p×q)个Li×Cj矩阵中被变换的矩阵进行相应的逆变换并用逆变换后的矩阵替换所述被变换的矩阵,并且将被确定为未被变换的矩阵保持不变;以及
形成步骤,将被确定为未被变换的矩阵和经过替换的矩阵形成一个n×(k×m)矩阵作为原始数据矩阵。
18.一种用于将经由并行总线发送的编码数据解码的解码器,其中并行总线宽度为n位,所述编码数据包含长度为n位的变换信息字和k个突发串的数据,每个突发串包含m个数据字,k、m和n为自然数,该解码器包括:
提取单元,根据预定义的变换信息字位置信息而从编码数据中提取所述变换信息字;
组织单元,根据预定义的矩阵数目和各个矩阵的大小而将编码数据中的剩余数据组织为(p×q)个Li×Cj矩阵,其中p、q、i、j、Li、Cj为自然数,i=1,...,p,j=1,...,q,并且 Σ i = 1 p L i = n , Σ j = 1 q C j = k × m ;
确定单元,根据所述变换信息字确定每个所述Li×Cj矩阵的变换状态;
逆变换单元,根据所确定的每个所述Li×Cj矩阵的变换状态,对所述(p×q)个Li×Cj矩阵中被变换的矩阵进行相应的逆变换并用逆变换后的矩阵替换所述被变换的矩阵,并且将被确定为未被变换的矩阵保持不变;以及
形成单元,将被确定为未被变换的矩阵和经过替换的矩阵形成一个n×(k×m)矩阵作为原始数据矩阵。
CNA2008100015001A 2008-01-29 2008-01-29 总线编/解码方法和总线编/解码器 Pending CN101499048A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CNA2008100015001A CN101499048A (zh) 2008-01-29 2008-01-29 总线编/解码方法和总线编/解码器
US12/360,914 US8085172B2 (en) 2008-01-29 2009-01-28 Bus encoding/decoding method and bus encoder/decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNA2008100015001A CN101499048A (zh) 2008-01-29 2008-01-29 总线编/解码方法和总线编/解码器

Publications (1)

Publication Number Publication Date
CN101499048A true CN101499048A (zh) 2009-08-05

Family

ID=40900363

Family Applications (1)

Application Number Title Priority Date Filing Date
CNA2008100015001A Pending CN101499048A (zh) 2008-01-29 2008-01-29 总线编/解码方法和总线编/解码器

Country Status (2)

Country Link
US (1) US8085172B2 (zh)
CN (1) CN101499048A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103578524A (zh) * 2012-08-09 2014-02-12 三星电子株式会社 多媒体处理系统及其操作方法
CN105302764A (zh) * 2014-07-28 2016-02-03 英特尔公司 模式选择平衡编码互连

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8402188B2 (en) 2008-11-10 2013-03-19 Micron Technology, Inc. Methods and systems for devices with a self-selecting bus decoder
US9087025B2 (en) 2009-02-05 2015-07-21 Micron Technology, Inc. Data encoding using spare channels in a memory system
US9288089B2 (en) * 2010-04-30 2016-03-15 Ecole Polytechnique Federale De Lausanne (Epfl) Orthogonal differential vector signaling
US9985634B2 (en) 2010-05-20 2018-05-29 Kandou Labs, S.A. Data-driven voltage regulator
US8593305B1 (en) 2011-07-05 2013-11-26 Kandou Labs, S.A. Efficient processing and detection of balanced codes
US9246713B2 (en) 2010-05-20 2016-01-26 Kandou Labs, S.A. Vector signaling with reduced receiver complexity
US9077386B1 (en) 2010-05-20 2015-07-07 Kandou Labs, S.A. Methods and systems for selection of unions of vector signaling codes for power and pin efficient chip-to-chip communication
US9251873B1 (en) 2010-05-20 2016-02-02 Kandou Labs, S.A. Methods and systems for pin-efficient memory controller interface using vector signaling codes for chip-to-chip communications
US9450744B2 (en) 2010-05-20 2016-09-20 Kandou Lab, S.A. Control loop management and vector signaling code communications links
US9564994B2 (en) 2010-05-20 2017-02-07 Kandou Labs, S.A. Fault tolerant chip-to-chip communication with advanced voltage
US9288082B1 (en) 2010-05-20 2016-03-15 Kandou Labs, S.A. Circuits for efficient detection of vector signaling codes for chip-to-chip communication using sums of differences
US9596109B2 (en) 2010-05-20 2017-03-14 Kandou Labs, S.A. Methods and systems for high bandwidth communications interface
US9479369B1 (en) 2010-05-20 2016-10-25 Kandou Labs, S.A. Vector signaling codes with high pin-efficiency for chip-to-chip communication and storage
US9401828B2 (en) 2010-05-20 2016-07-26 Kandou Labs, S.A. Methods and systems for low-power and pin-efficient communications with superposition signaling codes
US9362962B2 (en) 2010-05-20 2016-06-07 Kandou Labs, S.A. Methods and systems for energy-efficient communications interface
US9667379B2 (en) 2010-06-04 2017-05-30 Ecole Polytechnique Federale De Lausanne (Epfl) Error control coding for orthogonal differential vector signaling
US8966291B2 (en) * 2010-12-23 2015-02-24 Qualcomm Incorporated Method and apparatus for reducing dynamic power within system-on-a-chip routing resources
US9275720B2 (en) 2010-12-30 2016-03-01 Kandou Labs, S.A. Differential vector storage for dynamic random access memory
US8614634B2 (en) * 2012-04-09 2013-12-24 Nvidia Corporation 8b/9b encoding for reducing crosstalk on a high speed parallel bus
US9268683B1 (en) 2012-05-14 2016-02-23 Kandou Labs, S.A. Storage method and apparatus for random access memory using codeword storage
US9189051B2 (en) * 2012-12-14 2015-11-17 International Business Machines Corporation Power reduction by minimizing bit transitions in the hamming distances of encoded communications
WO2014113727A1 (en) 2013-01-17 2014-07-24 Kandou Labs, S.A. Methods and systems for chip-to-chip communication with reduced simultaneous switching noise
CN105122758B (zh) 2013-02-11 2018-07-10 康杜实验室公司 高带宽芯片间通信接口方法和系统
WO2014172377A1 (en) 2013-04-16 2014-10-23 Kandou Labs, S.A. Methods and systems for high bandwidth communications interface
EP2997704B1 (en) 2013-06-25 2020-12-16 Kandou Labs S.A. Vector signaling with reduced receiver complexity
US9106465B2 (en) 2013-11-22 2015-08-11 Kandou Labs, S.A. Multiwire linear equalizer for vector signaling code receiver
US9806761B1 (en) 2014-01-31 2017-10-31 Kandou Labs, S.A. Methods and systems for reduction of nearest-neighbor crosstalk
US9369312B1 (en) 2014-02-02 2016-06-14 Kandou Labs, S.A. Low EMI signaling for parallel conductor interfaces
US9100232B1 (en) 2014-02-02 2015-08-04 Kandou Labs, S.A. Method for code evaluation using ISI ratio
EP3111607B1 (en) 2014-02-28 2020-04-08 Kandou Labs SA Clock-embedded vector signaling codes
US9509437B2 (en) 2014-05-13 2016-11-29 Kandou Labs, S.A. Vector signaling code with improved noise margin
US9148087B1 (en) 2014-05-16 2015-09-29 Kandou Labs, S.A. Symmetric is linear equalization circuit with increased gain
US9852806B2 (en) 2014-06-20 2017-12-26 Kandou Labs, S.A. System for generating a test pattern to detect and isolate stuck faults for an interface using transition coding
US9112550B1 (en) 2014-06-25 2015-08-18 Kandou Labs, SA Multilevel driver for high speed chip-to-chip communications
KR102288337B1 (ko) 2014-07-10 2021-08-11 칸도우 랩스 에스에이 증가한 신호대잡음 특징을 갖는 벡터 시그널링 코드
US9432082B2 (en) 2014-07-17 2016-08-30 Kandou Labs, S.A. Bus reversable orthogonal differential vector signaling codes
CN106664272B (zh) 2014-07-21 2020-03-27 康杜实验室公司 从多点通信信道接收数据的方法和装置
WO2016019384A1 (en) 2014-08-01 2016-02-04 Kandou Labs, S.A. Orthogonal differential vector signaling codes with embedded clock
US9674014B2 (en) 2014-10-22 2017-06-06 Kandou Labs, S.A. Method and apparatus for high speed chip-to-chip communications
KR102372931B1 (ko) 2015-06-26 2022-03-11 칸도우 랩스 에스에이 고속 통신 시스템
US9557760B1 (en) 2015-10-28 2017-01-31 Kandou Labs, S.A. Enhanced phase interpolation circuit
US9577815B1 (en) 2015-10-29 2017-02-21 Kandou Labs, S.A. Clock data alignment system for vector signaling code communications link
US10055372B2 (en) 2015-11-25 2018-08-21 Kandou Labs, S.A. Orthogonal differential vector signaling codes with embedded clock
EP3408935B1 (en) 2016-01-25 2023-09-27 Kandou Labs S.A. Voltage sampler driver with enhanced high-frequency gain
US10057049B2 (en) 2016-04-22 2018-08-21 Kandou Labs, S.A. High performance phase locked loop
US10003454B2 (en) 2016-04-22 2018-06-19 Kandou Labs, S.A. Sampler with low input kickback
WO2017189931A1 (en) 2016-04-28 2017-11-02 Kandou Labs, S.A. Vector signaling codes for densely-routed wire groups
US10153591B2 (en) 2016-04-28 2018-12-11 Kandou Labs, S.A. Skew-resistant multi-wire channel
WO2017190102A1 (en) 2016-04-28 2017-11-02 Kandou Labs, S.A. Low power multilevel driver
US9906358B1 (en) 2016-08-31 2018-02-27 Kandou Labs, S.A. Lock detector for phase lock loop
US10411922B2 (en) 2016-09-16 2019-09-10 Kandou Labs, S.A. Data-driven phase detector element for phase locked loops
US10200188B2 (en) 2016-10-21 2019-02-05 Kandou Labs, S.A. Quadrature and duty cycle error correction in matrix phase lock loop
US10372665B2 (en) 2016-10-24 2019-08-06 Kandou Labs, S.A. Multiphase data receiver with distributed DFE
US10200218B2 (en) 2016-10-24 2019-02-05 Kandou Labs, S.A. Multi-stage sampler with increased gain
US10116468B1 (en) 2017-06-28 2018-10-30 Kandou Labs, S.A. Low power chip-to-chip bidirectional communications
US10686583B2 (en) 2017-07-04 2020-06-16 Kandou Labs, S.A. Method for measuring and correcting multi-wire skew
US10203226B1 (en) 2017-08-11 2019-02-12 Kandou Labs, S.A. Phase interpolation circuit
US10326623B1 (en) 2017-12-08 2019-06-18 Kandou Labs, S.A. Methods and systems for providing multi-stage distributed decision feedback equalization
US10554380B2 (en) 2018-01-26 2020-02-04 Kandou Labs, S.A. Dynamically weighted exclusive or gate having weighted output segments for phase detection and phase interpolation
KR102503176B1 (ko) * 2018-03-13 2023-02-24 삼성디스플레이 주식회사 데이터 전송 시스템, 상기 데이터 전송 시스템을 포함하는 표시 장치 및 이를 이용한 데이터 전송 방법

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7899961B2 (en) * 2008-09-02 2011-03-01 Qimonda Ag Multi-mode bus inversion method and apparatus

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103578524A (zh) * 2012-08-09 2014-02-12 三星电子株式会社 多媒体处理系统及其操作方法
CN103578524B (zh) * 2012-08-09 2017-12-05 三星电子株式会社 多媒体处理系统及其操作方法
CN105302764A (zh) * 2014-07-28 2016-02-03 英特尔公司 模式选择平衡编码互连
US10078612B2 (en) 2014-07-28 2018-09-18 Intel Corporation Mode selective balanced encoded interconnect
CN105302764B (zh) * 2014-07-28 2018-10-12 英特尔公司 模式选择平衡编码互连

Also Published As

Publication number Publication date
US20090193159A1 (en) 2009-07-30
US8085172B2 (en) 2011-12-27

Similar Documents

Publication Publication Date Title
CN101499048A (zh) 总线编/解码方法和总线编/解码器
CN103326732B (zh) 压缩数据的方法、解压数据的方法、编码器和解码器
CN104579360B (zh) 一种数据处理的方法和设备
CN103995887A (zh) 位图索引压缩方法和位图索引解压方法
EP2996046B1 (en) Data reading and writing method, device and system
US7612694B1 (en) Efficient coding of small integer sets
CN103546161A (zh) 基于二进制位处理的无损压缩方法
Subrahmanya et al. A bus encoding technique for power and cross-talk minimization
CN108288966A (zh) 极性Polar码的速率匹配处理方法及装置
CN105302494A (zh) 一种压缩策略选择方法及装置
CN103166740A (zh) 一种流量指示图的编码方式及信标帧
KR970071286A (ko) 고성능 데이터 처리 시스템에서 4-웨이 최소 최근 사용 메카니즘의 구현 방법과 이를 포함한 캐시 메모리
KR101139233B1 (ko) 컴퓨터 시스템의 i/o 전력을 줄이기 위한 방법 및 장치, 그리고 컴퓨터 시스템
CN101771497A (zh) 信号传输方法和装置
CN102265266A (zh) 一种数据地址编码的方法及装置
CN116484442A (zh) 基于数据加密的智能售电数据存储方法
US11362673B2 (en) Entropy agnostic data encoding and decoding
CN104282312A (zh) 信号编码和解码方法以及设备
CN103210590A (zh) 压缩方法及设备
CN109213973A (zh) Vin码转码存储方法及装置和对应的读取方法及装置
CN116362800A (zh) 加速消费回馈分润的系统
Song et al. Energy-efficient data movement with sparse transition encoding
CN1161911C (zh) 从传输格式组合的计算值到传输格式组合指示的映射方法
WO2020173368A1 (zh) 一种二维码的扩展方法
JP2606583B2 (ja) ベクトル画像符号化装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Open date: 20090805