用于基于握手的异步互连的系统和方法
【专利摘要】本公开的某些方面提供用于异步网络的握手协议的技术以及对应的电路元件。这些技术利用无时钟的延迟不敏感的数据编码方案。不管互连线中的延迟如何,所提出的网络均可正确地操作。
【专利说明】用于基于握手的异步互连的系统和方法
[0001]背景
[0002]领域
[0003]本公开的某些实施例一般涉及异步互连,尤其涉及设计用于异步网络的电路块和握手协议。
[0004]背景
[0005]使用具有高频时钟的全局同步互连的大规模片上系统应用可能遭遇严重的时钟偏斜(clock skew)问题。在这样的同步系统中纳入多个时钟域可能是困难的。对于这种高性能的或大规模的应用,异步网络总线会是优选的。
[0006]概述
[0007]本公开的某些实施例提供了一种网络中的异步节点。该异步节点一般包括至少一组线,该至少一组线包括第一线、第二和第三线、以及第四线,第一线用于利用二相信令来指示分组的开始和结束,第二和第三线用于利用归零、双轨编码来发送该分组,其中该第一、第二和第三线所传递的信号包括数据流,第四线用于接收确认信号,该确认信号确认收到该数据流中的每个跳变。
[0008]本公开的某些实施例提供了一种异步网络。该异步网络一般包括多条线和经由这些线异步地通信的多个网络节点。每个网络节点一般包括多条线,其包括至少一组输入线和至少一组输出线,该至少一组输入线包括第一输入线、第二和第三输入线、以及传出确认线,第一输入线用于利用二相信令来指示输入分组的开始和结束,第二和第三输入线用于接收该输入分组,其中该第一、第二和第三输入线所传递的信号包括输入数据流,该传出确认线用于传送第一确认信号,该第一确认信号确认收到该输入数据流中的每个跳变;该至少一组输出线包括第一输出线、第二和第三输出线、以及传入确认线,第一输出线用于利用二相信令来指示输出分组的开始和结束,第二和第三输出线用于利用归零、双轨编码来传送该输出分组,其中该第一、第二和第三输出线所传递的信号包括输出数据流,该传入确认线用于接收第二确认信号,该第二确认信号确认收到该输出数据流中的每个跳变。
[0009]本公开的某些实施例提供了一种用于在网络中的异步节点中通信的方法。该方法一般包括在第一输入线上接收对输入分组的开始和结束的指示;在第二和第三输入线上接收该输入分组,其中该分组是利用归零、双轨编码来生成的,其中该第一、第二和第三输入线所传递的信号包括输入数据流;以及在传出确认线上传送第一确认信号,该第一确认信号确认收到该输入数据流中的每个跳变。
[0010]附图简要说明
[0011]为了能详细地理解本公开上面陈述的特征所用的方式,可以参照实施例来对以上简要概述内容的进行更具体的描述,其中一些实施例在附图中图解。然而应注意,附图仅解说了本公开的某些典型实施例,故不应被认为限定其范围,因为该描述可以认可其他同等有效的实施例。
[0012]图1解说了根据本公开的某些方面可在异步网络中使用的示例异步路由块。
[0013]图2解说了根据本公开的某些方面的用于在异步网络中的不同块之间握手的信令协议。
[0014]图3解说了根据本公开的某些方面的异步流水线锁存器。
[0015]图4解说了根据本公开的某些方面的可由异步网络中的异步节点执行的示例操作。
[0016]图5解说了可在异步网络中使用的Muller (穆勒)C元件以及不对称MullerC元件。
[0017]图6A-6B解说了根据本公开的某些方面的异步合并器(consolidator)。
[0018]图7解说了根据本公开的某些方面的异步分发器。
[0019]图8解说了根据本公开的某些方面的异步网络树的示例。
[0020]图9解说了根据本公开的某些方面的图8中给出的网络树的示例仿真。
[0021]详细描述
[0022]以下参照附图更全面地描述了本公开的各种实施例。然而,本公开可用许多不同形式来实施并且不应解释为被限定于本公开通篇给出的任何具体结构或功能。确切而言,提供这些实施例是为了使得本公开将是透彻和完整的,并且其将向本领域技术人员完全传达本公开的范围。基于本文中的教导,本领域技术人员应领会,本公开的范围旨在覆盖本文中所披露的本公开的任何实施例,不论其是与本公开的任何其他实施例相独立地还是组合地实现的。例如,可以使用本文中所阐述的任何数目的实施例来实现装置或实践方法。另夕卜,本公开的范围旨在覆盖使用作为本文中所阐述的本公开的各实施例的补充或者与之不同的其他结构、功能、或者结构及功能来实践的此类装置或方法。应当理解,本文中所公开的本公开的任何实施例可以由权利要求的一个或多个要素来实施。
[0023]措辞“示例性”在本文中用于表示“用作示例、实例或解说”。本文中描述为“示例性”的任何实施例不必被解释为优于或胜过其他实施例。
[0024]尽管本文中描述了特定实施例,但对这些实施例的众多变动和置换落在本公开的范围之内。虽然提到了优选实施例的一些益处和优点,但本公开的范围并非旨在被限定于特定益处、用途或目标。相反,本公开的各实施例旨在能宽泛地应用于不同的技术、系统配置、网络和协议,其中一些作为示例在附图以及以下对优选实施例的详细描述中解说。详细描述和附图仅仅解说本公开而非限定本公开,本公开的范围由所附权利要求及其等效技术方案来定义。
[0025]示例异步网络
[0026]本公开的某些方面提供了用于可在异步网络中使用的握手协议的技术和对应装置(例如,电路块)。所提出的异步网络利用无时钟、延迟不敏感的数据编码方案。所提出的握手协议可允许被设计成不管互连线中的延迟如何均正确地工作的异步网络。
[0027](诸如本文所描述的)片上异步网络可用于在不同块之间路由事件和串行分组。例如,异步网络可用在神经网络的大规模硬件仿真中,其中每个神经元可在随机时刻发出尖峰并且需要将信息分组发送到跨该网络分布的大量神经元。这种异步网络的其他应用可包括大型“片上系统”应用,其中高频时钟下的全局同步互连遭受严重的时钟偏斜问题。
[0028]图1解说了根据本公开的某些方面可在异步网络中使用的示例异步路由块100。如所解说的,该异步路由块可具有N组输入线和M组输出线,其中N和M是整数。
[0029]每组输入线102可包括三条输入线(例如,I_R,I_A, I_B)以及一条对应的传出确认(例如,K)线。R线(例如,1_&108)可通过在一分组的开始处跳变到一状态(例如,高或低)并在该分组的持续时间内停留在该相同状态(例如,高或低)中来显示该分组的持续时间。A和B线(例如,LA1KM, O1IOe)可将该分组作为I和O来串行地接收。确认线(例如,IJi1IlO)可确认收到来自前一级的R、A或B线中任一条线中的每个跳变。
[0030]每组输出线112可包括三条传出线(例如,0_R, 0_A, 0_B)以及一条对应的传入确认(例如,K)线。类似地,R线可通过在一传出分组的开始处跳变到一状态并在该分组的持续时间内保留在该相同状态内来显示该分组的持续时间。A和B线可利用一种编码方案(诸如归零、双轨编码)来将该分组作为I和O来串行地发送。传入确认线(例如,OJO可确认R、A或B线中任一条线中的每个跳变被网络中的下一元件收到。
[0031]异步路由块110可以是流水线锁存器、合并器、分发器或异步网络中使用的任何其他块。流水线锁存器可用作异步锁存器,合并器可将两个输入流组合,而分发器可将传入分组路由到两个不同的目的地。
[0032]图2解说了用于在异步网络中的不同块之间握手的信令协议。如先前所描述的,A204和B206信号可使用归零、双轨编码来发送数据。在分组的开始处,R208信号可跳变到高(例如,事件212)并且可在该分组的持续时间内保持为高(例如,直到事件216)。A和B信号可发送该分组。K210信号可确认R、A或B线中任一条线上的每个跳变(例如,事件212和214)。应当注意,R信号可使用二相信令协议,与常规异步网络相比,该二相信令协议可导致该异步网络中的硬件块更简单。
[0033]异步通信网络可能需要流水线级来改善链路带宽并最小化拥塞。流水线级可对网络的等待时间具有微乎其微的影响,因为花在确认跳变上的时间可以等于几个(例如,4个)逻辑门的延迟的和。
[0034]图3解说了根据本公开的某些方面的异步流水线锁存器300。如所解说的,该异步流水线锁存器可输入数据流(例如,I_A、I_B和I_R信号)并输出其对应确认信号(例如,1_K)。该异步锁存器还可输出数据流(例如,0_A, 0_B, 0_R)并输入其对应确认(例如,0_K)。
[0035]该异步锁存器可包括三个Muller C元件302 (在图5中更详细地示出)。假定A、B和R信号遵循图2中描述的协议,则该异步锁存器还可生成各元件间需要的握手信号。例如,该异步锁存器可使用XOR (异或)门304生成确认信号以确认对来自前一元件的数据流的正确接收。该确认信号可以通过利用以下事实来生成:该R信号使用二相信令协议。
[0036]图4解说了根据本公开的某些方面的可由异步网络中的异步节点执行的示例操作。
[0037]在402,异步节点可在第一输入线上接收对输入分组的开始和结束的指示。在404,该异步节点可在第二和第三输入线上接收该输入分组。该分组可利用归零、双轨编码来生成。第一、第二和第三输入线所传递的信号包括输入数据流。在406,该异步节点可在传出确认线上传送第一确认信号,该第一确认信号确认收到该输入数据流中的每个跳变。
[0038]在408,该异步节点可处理该输入数据流以生成输出数据流。在410,该异步节点可利用二相信令在第一输出线上指示输出分组的开始和结束。在412,该异步节点可利用归零、双轨编码在第二和第三输出线上传送该输出分组。该第一、第二和第三输出线所传递的信号包括输出数据流。在414,该异步节点可在传入确认线上接收第二确认信号。
[0039]图5解说了可在所提出的异步网络中使用的Muller C元件502以及不对称MullerC元件504。当两个输入均为高时,Muller C元件的输出被断言;而当两个输入均为低时,该元件被解除断言。在不同输入的情况下,输出保持其先前的值,如在表506中所解说的。多输入Muller C元件使用与双输入Muller C元件类似的原理。
[0040]不对称Muller C元件504可忽略关于某些跳变的特定输入。例如,不对称MullerC元件504忽略输入A上的从I到O的跳变。
[0041]图6A-6B解说了根据本公开的某些方面可在异步网络中使用的合并器。图6A解说了双输入合并器602,该双输入合并器602从两个输入接收串行数据并且输出首先到达的分组而保留第二分组。
[0042]合并器602可向该分组的头部添加一个地址位。该地址位可定义该合并器的两个输入中的哪个输入生成了该分组。因为不能保证这两个输入上的活动的互斥性,所以可使用判决器来决定这两个分组(以及因此R信号)中的哪一个首先到达。第二分组仅在第一分组完成(如由R信号返回其先前状态(例如,O)来信令通知的)之后被传送。在R信号上使用二相编码简化了用于创建地址以及与下一级进行握手的电路系统。在每个合并器处添加地址位自动地将该分组的发送者的地址编码在分组头部中。
[0043]对于某些方面,合并器的网络可从不同事件或分组生成器接收分组并且将这些分组路由穿过该网络,同时自动将地址位添加到头部。分组生成器的地址可按照其在该网络中的位置以及按照穿过该网络的动作而自动被编码在头部中。应当注意,分组生成器的地址可能不需要被存储在个体分组生成器中。
[0044]根据某些方面,可在每个合并器之前添加一个或多个流水线锁存器以最小化网络中的拥塞并且确保先前级不被正等待来自下游级的确认的位所阻塞。
[0045]图6B解说了利用双输入合并器602的示例三输入合并器604。可使用类似原理来生成η输入合并器,其中η可以是大于2的整数。
[0046]图7解说了根据本公开的某些方面可在异步网络中使用的分发器。分发器702可基于所接收的输入分组的头部中的地址位而将该分组发送到其两个输出中的一个。分发器702可基于分组头部中的第一位来将传入分组路由到两个输出中的一个。该分发器还可将该头部中的第一位(例如,该地址位)移除,该第一位曾被用来决定该分组的目的地。结果是,可将分组路由穿过分发器的网络,这些分发器仅观察并删除头部的第一位而将该分组的剩余部分传递下去。
[0047]如先前所述,合并器602和分发器702可表示用于在所提出的异步网络中路由信息的两个有用的块。图8解说了根据本公开的某些方面可用合并器来设计的网络树的示例。网络树800可以将叶节点上的简单事件生成器所生成的事件传递到根节点,同时确保适当的地址位被添加到串行分组。对于某些方面,也可设计类似的分发器树以便将信息从根节点传送到各个叶节点。如所解说的,可以使用6个双输入合并器来生成一个7输入网络树。简单事件生成器802在树的叶上生成事件,而合并器将这些事件路由到树的根。
[0048]图9解说了根据本公开的某些方面的图8中给出的网络树800的示例仿真。合并器的网络树800用VHDL来设计并使用Modelsim软件来仿真。如图5和图6Α中所示地设计用来仿真的电路块。分别在节点0、1、2和5生成事件902、904、906和908。在根节点处接收串行分组912、914、916和918以分别信令通知事件902、904、906和908中的每一个。这些串行分组编码创建该事件的节点的地址。数据被双轨编码并且根节点处的最终串行数据在下面的图例中解释。在各合并器之间添加流水线锁存器以最小化网络中的拥塞。
[0049]在本公开中提出的基于握手的异步网络跨网络传递事件和串行分组。所使用的信令协议和电路块可以用VHDL来描述和实现。所提出的异步网络使得能跨大型硬件设计进行快速通信而无需高速时钟。所提出的异步网络相对于常规同步网络拥有多个优点,诸如简化了定时分析、降低了时钟树中的功耗并且减少了电磁发射。
[0050]以上所描述的方法的各种操作可由能够执行相应功能的任何合适的装置来执行。这些装置可包括各种硬件和/或软件组件和/或模块,包括但不限于电路、专用集成电路(ASIC)或处理器。
[0051]如本文中所使用的,术语“确定”广泛涵盖各种各样的动作。例如,“确定”可包括演算、计算、处理、推导、研究、查找(例如,在表、数据库或其他数据结构中查找)、探知及诸如此类。而且,“确定”可包括接收(例如,接收信息)、访问(例如,访问存储器中的数据)及诸如此类。而且,“确定”还可包括解析、选择、选取、确立及类似动作。
[0052]如本文中所使用的,引述一列项目中的“至少一个”的短语是指这些项目的任何组合,包括单个成员。作为示例,“a、b或c中的至少一个”旨在涵盖:a、b、C、a_b、a_c、b_c、以及a_b_c。
[0053]结合本公开所描述的各种解说性逻辑框、模块、以及电路可用设计成执行本文所描述功能的通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列信号(FPGA)或其他可编程逻辑器件(PLD)、分立的门或晶体管逻辑、分立的硬件组件或其任何组合来实现或执行。通用处理器可以是微处理器,但在替换方案中,处理器可以是任何市售的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算设备的组合,例如DSP与微处理器的组合、多个微处理器、与DSP核心协同的一个或多个微处理器或任何其它此类配置。
[0054]结合本公开描述的方法或算法的步骤可直接在硬件中、在由处理器执行的软件模块中、或在这两者的组合中实施。软件模块可驻留在本领域所知的任何形式的存储介质中。可使用的存储介质的一些示例包括随机存取存储器(RAM)、只读存储器(ROM)、闪存、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动盘、⑶-R0M,等等。软件模块可包括单条指令、或许多条指令,且可分布在若干不同的代码段上,分布在不同的程序间以及跨多个存储介质分布。存储介质可被耦合到处理器以使得该处理器能从/向该存储介质读写信息。替换地,存储介质可以被整合到处理器。
[0055]本文所公开的方法包括用于达成所描述的方法的一个或多个步骤或动作。这些方法步骤和/或动作可以彼此互换而不会脱离权利要求的范围。换言之,除非指定了步骤或动作的特定次序,否则具体步骤和/或动作的次序和/或使用可以改动而不会脱离权利要求的范围。
[0056]所描述的功能可在硬件、软件、固件或其任何组合中实现。如果在软件中实现,则各功能可以作为一条或多条指令存储在计算机可读介质上。存储介质可以是能被计算机访问的任何可用介质。作为示例而非限定,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或能被用来携带或存储指令或数据结构形式的期望程序代码且能被计算机访问的任何其他介质。如本文所用的碟或盘包括压缩盘(⑶)、激光盘、光盘、数字通用盘(DVD)、软盘和蓝光,其中碟常常磁学地再现数据而盘用激光光学地再现数据。
[0057]因此,某些实施例可包括用于执行本文中给出的操作的计算机程序产品。例如,此种计算机程序产品可包括其上存储(和/或编码)有指令的计算机可读介质,这些指令能由一个或多个处理器执行以执行本文中所描述的操作。对于某些实施例,计算机程序产品可包括包装材料。
[0058]软件或指令还可以在传输介质上传送。例如,如果软件是使用同轴电缆、光纤电缆、双绞线、数字订户线(DSL)、或诸如红外、无线电、以及微波等无线技术从web站点、服务器或其它远程源传送而来的,则该同轴电缆、光纤电缆、双绞线、DSL、或诸如红外、无线电、以及微波等无线技术就被包括在传输介质的定义里。
[0059]此外,应当领会,用于执行本文中所描述的方法和技术的模块和/或其它恰适装置能由用户终端和/或基站在适用的场合下载和/或以其他方式获得。例如,此类设备能被耦合至服务器以促成用于执行本文中所描述的方法的装置的转移。替换地,本文所述的各种方法能经由存储装置(例如,RAM、ROM、诸如压缩碟(CD)或软盘等物理存储介质等)来提供,以使得一旦将该存储装置耦合至或提供给用户终端和/或基站,该设备就能获得各种方法。此外,能利用适于向设备提供本文中所描述的方法和技术的任何其他合适的技术。
[0060]应该理解的是,权利要求并不被限定于以上所解说的精确配置和组件。可在以上所描述的方法和装置的布局、操作和细节上作出各种改动、更换和变形而不会脱离权利要求的范围。
[0061]尽管上述内容针对本公开的实施例,然而可设计出本公开的其他和进一步的实施例而不会脱离其基本范围,且其范围是由所附权利要求来确定的。
【权利要求】
1.一种网络中的异步节点,包括: 至少一组输入线,所述至少一组输入线包括第一输入线、第二和第三输入线,所述第一输入线用于利用二相信令来指示输入分组的开始和结束,所述第二和第三输入线用于接收所述输入分组,其中所述第一、第二和第三输入线所传递的信号包括输入数据流; 传出确认线,其用于传送第一确认信号,所述第一确认信号确认收到所述输入数据流中的每个跳变;以及 至少一组输出线,所述至少一组输出线包括第一输出线、第二和第三输出线、以及传入确认线,所述第一输出线用于利用二相信令来指示输出分组的开始和结束,所述第二和第三输出线用于利用归零、双轨编码来传送所述输出分组,其中所述第一、第二和第三输出线所传递的信号包括输出数据流,所述传入确认线用于接收第二确认信号,所述第二确认信号确认收到所述输出数据流中的每个跳变。
2.如权利要求1所述的异步节点,其特征在于,所述第一输入线跳变以指示所述输入分组的开始并在所述输入分组的持续时间内保持为高。
3.如权利要求1所述的异步节点,其特征在于,所述异步节点是包括XOR门的异步流水线锁存器,所述XOR门用于生成所述第一确认信号。
4.如权利要求1所述的异步节点,其特征在于,所述异步节点包括合并器,所述合并器包括: 用于将在第一组输入线上接收到的第一数据流与在第二组输入线上接收到的第二数据流相组合以生成所述输出数据流的电路;以及 用于在所述一组输出线上传送所述输出数据流的电路。
5.如权利要求4所述的异步节点,其特征在于,所述用于组合的电路包括: 用于在所述第一组输入线上接收第一分组以及在所述第二组输入线上接收第二分组的电路; 用于确定所述第一分组或所述第二分组中哪个分组首先到达的判决器; 用于向所述第一分组和第二分组的头部添加至少一个位来指示地址的电路; 用于如果所述第一分组首先到达,则先输出所述第一分组然后输出所述第二分组的电路;以及 用于如果所述第二分组首先到达,则先输出所述第二分组然后输出所述第一分组的电路。
6.如权利要求1所述的异步节点,其特征在于,所述异步节点包括分发器,所述分发器包括用于基于在所述输入数据流中接收到的两个或更多个分组的地址将所述分组路由到两组输出线的电路。
7.如权利要求6所述的异步节点,其特征在于,还包括: 用于在路由所述分组之前从所述分组移除一个或多个地址位的电路。
8.如权利要求1所述的异步节点,其特征在于,所述异步节点包括多个MullerC元件。
9.如权利要求4所述的异步节点,其特征在于,所述网络包括多个合并器,所述合并器中的每一个从多个分组生成器接收多个输入分组并通过自动向所述输入分组的头部添加地址位来将所述输入分组 路由通过所述网络。
10.如权利要求9所述的异步节点,其特征在于,基于分组生成器在所述网络中的位置,所述分组生成器的地址在其生成的分组穿过所述多个合并器时被自动编码在其生成的分组的头部中。
11.一种用于在网络中的异步节点中通信的方法,包括: 在第一输入线上接收对输入分组的开始和结束的指示; 在第二和第三输入线上接收所述输入分组,其中所述分组是利用归零、双轨编码生成的,其中所述第一、第二和第三输入线所传递的信号包括输入数据流;以及 在传出确认线上传送第一确认信号,所述第一确认信号确认收到所述输入数据流中的每个跳变。
12.如权利要求11所述的方法,其特征在于,还包括: 处理所述输入数据流以生成输出数据流。
13.如权利要求11所述的方法,其特征在于,还包括: 利用二相信令在第一输出线上指示输出分组的开始和结束。
14.如权利要求13所述的方法,其特征在于,还包括: 利用归零、双轨编码来在第二和第三输出线上传送所述输出分组,其中所述第一、第二和第三输出线所传递的信号包括输出数据流。
15.如权利要求14所述的方法,其特征在于,还包括在传入确认线上接收第二确认信号。
16.如权利要求11所述的方法,其特征在于,所述第一输入线跳变以指示所述输入分组的开始并在所述输入分组的持续时间内保持为高。
17.如权利要求11所述的方法,其特征在于,还包括经由XOR门来生成所述第一确认信号。
18.如权利要求11所述的方法,其特征在于,还包括: 在所述第一组输入线上接收第一分组以及在所述第二组输入线上接收第二分组; 确定所述第一分组或所述第二分组中哪个分组首先到达; 向所述第一分组和第二分组的头部添加至少一个位来指示地址;以及如果所述第一分组首先到达,则先输出所述第一分组再输出所述第二分组,或者如果所述第二分组首先到达,则先输出所述第二分组再输出所述第一分组。
19.如权利要求11所述的方法,其特征在于,还包括基于在所述输入数据流中接收到的两个或更多个分组的地址将所述分组路由到两组输出线。
20.如权利要求19所述的方法,其特征在于,还包括: 在路由所述分组之前从所述分组移除一个或多个地址位。
21.—种网络,包括: 多条线;以及 经由所述线异步地通信的多个网络节点,每个网络节点包括, 多条线,所述多条线包括至少一组输 入线,所述至少一组输入线包括第一输入线、第二和第三输入线,所述第一输入线用于利用二相信令来指示输入分组的开始和结束,所述第二和第三输入线用于接收所述输入分组,其中所述第一、第二和第三输入线所传递的信号包括输入数据流; 传出确认线,其用于传送第一确认信号,所述第一确认信号确认收到所述输入数据流中的每个跳变;以及 至少一组输出线,所述至少一组输出线包括第一输出线、第二和第三输出线、以及传入确认线,所述第一输出线用于利用二相信令来指示输出分组的开始和结束,所述第二和第三输出线用于利 用归零、双轨编码来传送所述输出分组,其中所述第一、第二和第三输出线所传递的信号包括输出数据流,所述传入确认线用于接收第二确认信号,所述第二确认信号确认收到所述输出数据流中的每个跳变。
【文档编号】H04L25/40GK103814339SQ201280045783
【公开日】2014年5月21日 申请日期:2012年9月21日 优先权日:2011年9月21日
【发明者】S·范卡彻曼, J·A·莱文 申请人:高通股份有限公司