具体实施方式
以下基于实施例对本公开进行描述,但是本公开并不仅仅限于这些实施例。在下文对本公开的细节描述中,详尽描述了一些特定的细节部分。对本领域技术人员来说没有这些细节部分的描述也可以完全理解本公开。为了避免混淆本公开的实质,公知的方法、过程、流程没有详细叙述。另外附图不一定是按比例绘制的。
在本文中使用以下术语。
通用异步收发传输器:英文全称Universal Asynchronous Receiver/Transmitter,简称UART,用于将要传输的数据在串行通信与并行通信之间转换,最后实现的是异步传输。
异步传输:不要求发送方和接收方的时钟完全一样。
计数器:数字系统中用得较多的基本逻辑器件,通常用触发器构建。按进位体制的不同,计数器分为二进制计数器和非二进制计数器,其中,二进制计数器通过单个触发器实现,非二进制计数器通过多个触发器实现。构建计数器的触发器数量由进制数决定,进制数越大需要的触发器越多。若计数过程中不涉及进位,则触发器的数量需求由计数可能达到的最大值确定。
门控时钟:英文全称Clock-gating,在通过集成技术制造的情况下可简称ICG,常用于数字电路的低功耗设计。现在的数字集成电路基本都采用CMOS结构,静态功耗几乎很小,因而数字电路中的功耗主要集中于动态功耗。从MOS管层面来看,动态功耗在于电平翻转引起的电容充放电变化。电路在正常工作时,不可避免的要产生一定功耗;但是电路在不工作时,由于一些电平翻转导致的功耗就是无用的。鉴于此,数字电路中的时钟作为整个电路的驱动源,有很大的扇出,当有的电路不工作时,我们希望该电路上的时钟停止工作,从而减少电平翻转以实现功耗的降低,这样的时钟即为门控时钟。
码元:在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为码元。换言之,在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形就称为码元。码元是数字通信中承载信息量的基本信号单位,一个码元包括若干个比特的信息。
波特率:可以理解为一个设备在一秒钟内通过信道传输的码元数,是对符号传输速率的一种度量,用单位时间内载波调制状态改变的次数来表示。
比特率:表示单位时间内传输比特的数目,用于衡量数字信息的传输速度。
本公开的应用环境
本公开实施例提出了一种通用的、适合各种通用异步收发传输器的数据传输速率发生器,数据传输速率发生器用于确定通用异步收发传输器的接收速率。具体地,发送方的发送速率(例如发送波特率或发送比特率)作为目标发送速率(例如为相应的目标波特率或目标比特率),数据传输速率发生器基于所述目标发送速率确定一个调整后传输速率信号,通用异步收发传输器以所述调整后传输速率信号的频率接收数据,实现数据接收速率和所述目标发送频率的匹配。
本公开实施例提供的数据传输速率发生器,可以脱离通用异步收发传输器而独立存在,即可以是一个单独的器件,将其安装到装置或片上系统后,配合装置或片上系统上的通用异步收发传输器使用。数据传输速率发生器可以用于各种设置有通用异步收发传输器的硬件设备,例如,IOT(物联网)设备、嵌入式设备等。该数据传输速率发生器与异步收发传输器最终部署在的硬件无关。但为了示例性描述,下文中将主要以广泛涉及数据传输的数据中心为应用场景进行描述。本领域技术人员应当理解,本公开实施例还可以适用于其它的应用场景。
数据中心
数据中心是全球协作的特定设备网络,用来在互联网网络基础设施上传输、加速、展示、计算、存储数据信息。在今后的发展中,数据中心也将会成为企业竞争的资产。
在传统的大型数据中心,网络结构通常如图1所示,即互连网络模型(hierarchical inter-networking model)。这个模型包含了以下部分:
服务器140:各服务器140是数据中心的处理和存储实体,数据中心中大量数据的处理和存储都是由这些服务器140完成的。
接入交换机130:接入交换机130是用来让服务器140接入到数据中心中的交换机。一台接入交换机130接入多台服务器140。接入交换机130通常位于机架顶部,所以它们也被称为机顶(Top of Rack)交换机,它们物理连接服务器140。
汇聚交换机120:每台汇聚交换机120连接多台接入交换机130,同时提供其他的服务,例如防火墙,入侵检测,网络分析等。
核心交换机110:核心交换机110为进出数据中心的包提供高速的转发,为汇聚交换机120提供连接性。整个数据中心的网络分为L3层路由网络和L2层路由网络,核心交换机110通常为整个数据中心的网络提供一个弹性的L3层路由网络。
通常情况下,汇聚交换机120是L2和L3层路由网络的分界点,汇聚交换机120以下的是L2网络,以上是L3网络。每组汇聚交换机120管理一个传输点(POD,Point OfDelivery),每个POD内都是独立的VLAN网络。服务器在POD内迁移不必修改IP地址和默认网关,因为一个POD对应一个L2广播域。
汇聚交换机120和接入交换机130之间通常使用生成树协议(STP,Spanning TreeProtocol)。STP使得对于一个VLAN网络只有一个汇聚层交换机120可用,其他的汇聚交换机120在出现故障时才被使用(上图中的虚线)。也就是说,在汇聚交换机120的层面,做不到水平扩展,因为就算加入多个汇聚交换机120,仍然只有一个在工作。
服务器
由于服务器140才是数据中心真实的处理设备,图2和图4各示出了一种服务器140内部的结构框图,其中,图2所示服务器140基于中央处理器(Central Processing Unit,简称CPU)构建,图4所示服务器140基于加速单元(如GPU、NPU等)构建。
首先,参照图2,一些实施例中,服务器140可以包括一个或多个中央处理器12(以下亦称处理单元310),以及存储器14和通信设备18。
服务器140中的存储器14可以为主存储器(简称为主存或内存)。用于存储由数据信号表示的指令信息和/或数据信息,例如存放中央处理器12提供的数据(例如为运算结果),也可以用于实现中央处理器12与外部存储设备17(或称为辅助存储器或外部存储器)之间的数据交换。
在一些情形下,中央处理器12可能需要访问存储器14,以获取存储器14中的数据或对存储器14中的数据进行修改。由于存储器14的访问速度较慢,为了缓解中央处理器12与存储器14之间的速度差距,服务器140还包括与总线11耦合的高速缓冲存储器19,高速缓冲存储器19用于对存储器14中的一些可能会被反复调用的程序数据或者报文数据等数据进行缓存。高速缓冲存储器19例如由静态随机存储器(Static Random Access Memory,简称为SRAM)等类型的存储装置实现。高速缓冲存储器19可以为多级结构,例如具有一级缓存(L1 Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)的三级缓存结构,也可以是三级以上的缓存结构或其他类型缓存结构。在一些实施例中,高速缓冲存储器19的一部分(例如一级缓存,或一级缓存和二级缓存)可以集成在中央处理器12内部或与中央处理器12集成于同一片上系统中。
基于此,中央处理器12可以包括指令执行单元121、内存管理单元122等部分。指令执行单元121在执行一些需要修改内存的指令时发起写访问请求,该写访问请求指定了需要写入内存中的写入数据和相应的物理地址;内存管理单元122用于将这些指令指定的虚拟地址转译为该虚拟地址映射的物理地址,写访问请求指定的物理地址与相应指令指定的物理地址可以一致。
存储器14和高速缓冲存储器19之间的信息交互通常按块来组织。在一些实施例中,高速缓冲存储器19和存储器14可以按照相同的空间尺寸被划分成数据块,数据块可以作为高速缓冲存储器19和存储器14之间的数据交换的最小单位(包括预设长度的一个或多个数据)。为了表述简洁清晰,下面将高速缓冲存储器19中的各个数据块简称为缓存块(可以称为cacheline或高速缓存线),且不同的缓存块具有不同的缓存块地址;将存储器14中的各个数据块简称为内存块,且不同的内存块具有不同的内存块地址。缓存块地址例如包括用于定位数据块的物理地址标签。
由于受到空间和资源的限制,高速缓冲存储器19无法对存储器14中的全部内容都进行缓存,即高速缓冲存储器19的存储容量通常小于存储器14,高速缓冲存储器19提供的各个缓存块地址无法对应存储器14提供的全部内存块地址。中央处理器12在需要访问内存时,首先经总线11访问高速缓冲存储器19,以判断所要访问的内容是否已被存储于高速缓冲存储器19中,如果是,则高速缓冲存储器19命中,此时中央处理器12直接从高速缓冲存储器19中调用所要访问的内容;如果中央处理器12需要访问的内容不在高速缓冲存储器19中,则高速缓冲存储器19没有命中,中央处理器12需要经总线11访问存储器14,以在存储器14中查找相应的信息。因为高速缓冲存储器19的存取速率非常快,因此当高速缓冲存储器19命中时,中央处理器12的效率可以显著提高,进而也使整个服务器140的性能和效率得以提升。
服务器140的通信设备18包括通用异步收发传输器,通用异步收发传输器供中央处理器12与网络或其他设备间进行数据的串行传输。通用异步收发传输器可以是一个单独的器件,安装到服务器140上以供服务器140上的中央处理器12进行数据传输;也可以是与中央处理器12集成于同一片上系统中,然后以片上系统的形式和中央处理器12一同安装到服务器140上。由于通用异步收发传输器供中央处理器12与网络或其他设备传输数据,因而,接下来对集成有通用异步收发传输器和中央处理器12的片上系统进行详细介绍。
图3所示为上述集成有通用异步收发传输器和中央处理器12的片上系统。参照图3,该片上系统300包括片上总线310,片上总线310用于耦接通用异步收发传输器320和中央处理器12(处理单元310)。需要说明的是,图3中片上系统300集成了一个中央处理器12和一个通用异步收发传输器320,但本领域技术人员应当理解,片上系统300也可以集成多个中央处理器12和一个通用异步收发传输器320,具体一个通用异步收发传输器320负责多个中央处理器12的数据传输过程可以参照下文内容。
参照图3,在一些实施例中,每个中央处理器12可以包括用于处理指令的一个或多个处理器核12x,不同的处理器核12x可以各自处理不同或相同的指令集。处理器核12x可以包括其他处理模块,例如数字信号处理器(Digital Signal Processor,DSP)等,每个处理器核12x还可以用于处理特定的指令集。指令集可以支持复杂指令集计算(ComplexInstruction Set Computing,CISC)、精简指令集计算(Reduced Instruction SetComputing,RISC)或基于超长指令字(Very Long Instruction Word,VLIW)的计算。作为一种示例,图3示出了处理器核1至m。
在一些实施例中,高速缓冲存储器19可以被全部或部分集成于中央处理器12中。且根据不同架构,高速缓冲存储器19可以是位于各个处理器核12x之内和/或之外的单个或多级的内部高速缓冲存储器(如图3示出的3级高速高速缓冲存储器L1至L3,图3中统一标识为19),也可以包括面向指令的指令高速缓存和面向数据的数据高速缓存。在一些实施例中,中央处理器12中的各个部件可以共享至少一部分的高速缓冲存储器,如图3所示,处理器核1至m例如共用第三级高速高速缓冲存储器L3。中央处理器12还可以包括外部高速缓存(未示出),其他高速缓存结构也可以作为中央处理器12的外部高速缓存。
在一些实施例中,如图3所示,中央处理器12可以包括寄存器堆126(RegisterFile),寄存器堆126可以包括用于存储不同类型的数据和/或指令的多个寄存器,这些寄存器可以是不同类型的。例如,寄存器堆126可以包括:整数寄存器、浮点寄存器、状态寄存器、指令寄存器和指针寄存器等。寄存器堆126中的寄存器可以选用通用寄存器来实现,也可以根据中央处理器12的实际需求采用特定的设计。
中央处理器12可以包括内存管理单元(MemoryManagementUnit,MMU)122,用于实现虚拟地址到物理地址的转译。内存管理单元122中缓存有了页表中的一部分表项,内存管理单元122也可以从内存中获取未被缓存的表项。每个处理器核12x中可以设置一个或多个内存管理单元122,不同处理器核12x中的内存管理单元122也可以与位于其他处理器或处理器核中的内存管理单元122实现同步,使得每个处理器或处理器核可以共享统一的虚拟存储系统。
中央处理器12用于执行指令序列(即程序)。指令序列的执行是可以被用户(例如通过应用程序)和/或系统平台控制的。指令序列在用户和/或系统平台的控制下执行来处理特定事件,例如将高速缓冲存储器19等其它存储设备内的数据通过通用异步收发传输器320传输出去或者将发送方发送来的数据通过通用异步收发传输器320接收并存储到存储器14中。
上述中央处理器12执行每个指令的具体过程包括:从存放指令的存储器中取出指令、对取出的指令进行译码、执行译码后的指令、保存指令执行结果等步骤,如此循环,直到执行完指令序列中的全部指令或遇到停机指令。
为了实现指令的上述执行过程,中央处理器12可以包含取指令单元124、指令译码单元125、指令发射单元(未示出)、指令执行单元121和指令引退单元(未示出)等。
取指令单元124作为中央处理器12的启动引擎,用于将指令从存储器14中搬运到指令寄存器(可以是图3示出的寄存器堆26中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,中央处理器12进入指令译码阶段,指令译码单元125按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元121的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元通常存在于高性能的中央处理器12中,位于指令译码单元125与指令执行单元121之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元121,使得多个指令的并行操作成为可能。多个指令的并行操作,示例性地为多个指令执行单元121并行发送数据到通用异步收发传输器320或并行采样通用异步收发传输器320内缓冲的数据。
应当理解的是,在处理单元310包括多个处理器核12x的情况下,并行采样通用异步收发传输器320内缓冲数据的多个指令执行单元121也可能是包含在不同的处理器核12x内,并行向通用异步收发传输器320写入数据的多个指令执行单元121也可能是包含在不同的处理器核12x内。进一步,在服务器140包括多个中央处理器12的情况下,并行采样通用异步收发传输器320内缓冲数据的多个指令执行单元121也可能是包含在不同的中央处理器12内,并行向通用异步收发传输器320写入数据的多个指令执行单元121也可能是包含在不同的中央处理器12内。
指令经取指、译码并被调度到相应的指令执行单元121之后,相应的指令执行单元121开始执行该指令,即执行该指令所指示的操作、实现相应的功能。
指令引退单元(或称为指令写回单元)主要用于负责将指令执行单元121产生的执行结果写回到相应的存储位置(例如为中央处理器12内部的寄存器)中,以使后续指令能够从该存储位置处快速获取相应的执行结果。
对于不同类别的指令,可以在中央处理器12中相应的设置不同的指令执行单元121。指令执行单元121可以是运算单元(例如包含算术逻辑单元,矢量运算单元等,用于根据操作数进行运算并输出运算结果)、内存执行单元(例如用于根据指令访问内存以读取内存中的数据或向内存写入指定的数据等)以及协处理器等。在中央处理器12中,各个指令执行单元121可以并行运行并输出相应的执行结果。
指令执行单元121在执行某类指令(例如访存指令)时,需要访问存储器14,以获取存储器14中存储的信息或提供需要写入存储器14中的数据。
需要说明的是,用于执行访存指令的指令执行单元121也可以简称称为内存执行单元,该内存执行单元例如为加载存储单元(Load Store Unit,LSU)和/或其他用于内存访问的单元。
访存指令被取指令单元124获取之后,指令译码单元125可以对访存指令进行译码处理,使得访存指令的源操作数可被获取。译码处理后的访存指令被提供至相应的指令执行单元121中,该指令执行单元121可以对访存指令的源操作数进行相应的运算(例如由算术逻辑单元对存储于寄存器中的源操作数进行运算)以获得访存指令对应的地址信息,并根据该地址信息发起相应的请求,例如地址转译请求、写访问请求等。
访存指令的源操作数通常包括地址操作数,指令执行单元121对该地址操作数进行运算以获得访存指令对应的虚拟地址或物理地址。当内存管理单元122被禁用时,指令执行单元121可以直接通过逻辑运算获得访存指令的物理地址。当内存管理单元121被启用时,相应的指令执行单元121根据访存指令对应的虚拟地址发起地址转译请求,该地址转译请求包括与访存指令的地址操作数对应的虚拟地址;内存管理单元122响应地址转译请求,并根据与该虚拟地址匹配的表项将地址转译请求中的虚拟地址转换为物理地址,使得指令执行单元121可以根据转译后的物理地址访问高速缓冲存储器18和/或存储器14。
根据功能的不同,访存指令可包括加载指令和存储指令。加载指令的执行过程通常不需要对存储器14或高速缓冲存储器18中的信息进行修改,指令执行单元121只需要根据加载指令的地址操作数读取存储于存储器14、高速缓冲存储器18或外部的存储设备中的数据。
不同于加载指令,存储指令的源操作数不仅包括地址操作数,还包括数据信息,存储指令的执行过程通常需要对存储器14和/或高速缓冲存储器18进行修改。存储指令的数据信息可以指向写入数据,该写入数据的来源可以是运算指令、加载指令等指令的执行结果,也可以是中央处理器12中的寄存器或其他存储单元提供的数据、还可以是立即数。
图3中,通用异步收发传输器320是本公开实施例主要改进的部分,其包括的各具体部件在下文中详细描述。
当然,图2所示的通信设备18还可以包括其它一种或多种通信模块,这样服务器140可以通过多种方式与网络或其他设备通信。作为示例,通信设备18可以包括适用于特定的无线通信协议的无线通信模块,例如,通信设备18可以包括WLAN模块,用于实现符合电气和电子工程师协会(IEEE)制定的802.11标准的Wi-FiTM通信。通信设备18也可以包括WWAN模块,用于实现符合蜂窝或其他无线广域协议的无线广域通信。通信设备18还可以包括蓝牙模块等采用其它协议的通信模块,或其它自定义类型的通信模块。
此外,如图2所示,服务器140还可以包括存储设备17、显示设备13、音频设备15、鼠标/键盘16等输入/输出设备。存储设备17例如是通过相应接口与总线11耦合的硬盘、光盘以及闪存等用于信息存取的设备。显示设备13例如经相应的显卡与总线11耦合,用于根据总线11提供的显示信号进行显示。
图2所示的服务器140可基于目前市场上各种型号的处理器构建,并由WINDOWSTM操作系统版本、UNIX操作系统、Linux操作系统等操作系统驱动。此外,服务器140可以在PC机、台式机、笔记本、服务器和移动通信装置等硬件和/或软件中实施。当然,不同的计算机系统根据主板、操作系统和指令集架构的不同,其结构也可能有所变化。例如目前很多计算机系统设置有连接在总线11和各个输入/输出设备之间的输入/输出控制中心,且该输入/输出控制中心可以集成于中央处理器12之内或独立于中央处理器12。
接下来,参照图4,另一些实施例中,服务器140包括总线连接的存储器21、通信设备22以及处理单元集群27和加速单元集群28。
处理单元集群27包括处理单元23(亦称处理单元310)。加速单元集群28包括加速单元24。一个服务器140可以如图4所示在加速单元集群28内设置多个加速单元24,以及在调度单元集群27内设置多个调度单元23。
加速单元24即为了提高在专门用途领域中的数据处理速度而设计的处理单元,鉴于此,设置有加速单元24的服务器140也常用作计算装置。加速单元24也称为人工智能(AI)处理单元,包括中央处理器(CPU)、图形处理器(GPU)、通用图形处理器(GPGPU)、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、以及专用智能加速硬件(例如,神经网络处理器NPU)。处理单元23是对加速单元24进行调度、向各加速单元24分配要执行的待执行指令序列,它可以采用中央处理器(CPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等多种形式。
传统的处理单元的架构设计,使得在架构中控制单元、存储单元占用了很大一部分空间,而计算单元占用的空间反而不足,因此其在逻辑控制方面十分有效,而在大规模并行计算方面则效率不够。因此,开发出了各种专门的加速单元,用来针对不同功能和不同领域的计算进行更有效的提高运算速度的处理。本发明提出的加速单元24可以是专用于加速深度学习模型的运算处理速度的处理单元。它是采用数据驱动并行计算的架构,用于处理各深度学习模型节点的大量运算(例如卷积、池化等)。由于各深度学习模型节点的大量运算(例如卷积、池化等)中的数据和中间结果在整个计算过程中紧密联系,会被经常用到,用现有的处理单元构架,由于处理单元的核内的内存容量很小,因此要大量频繁访问核外存储器,造成处理的低效。采用这种专用于加速深度学习模型的运算处理速度的加速单元24,由于其每个核中具有适于深度学习模型计算用到的存储容量的片上内存,避免频繁访问核外部的存储器,就能大大提高处理效率,提高计算性能。
加速单元24要接受处理单元23的调度。如图4所示,存储器21中存储有各种深度学习模型,包括这些模型的节点和节点的权重张量等。这些深度学习模型当需要时被图4中的一个处理单元23部署到一个加速单元24。即,处理单元23可以通过指令的形式向加速单元24发送模型中的参数(如各节点的权重张量)在存储器21中的地址。加速单元24在实际使用该深度学习模型进行计算时,就会根据这些参数(例如权重张量)在存储器21中的地址,直接在存储器210中寻址这些参数,将其暂存在其片上内存中。加速单元24在实际使用该深度学习模型进行计算时,处理单元23还会将模型的输入张量通过指令的形式发送给加速单元24,暂存在加速单元24的片上内存中。这样,加速单元24就可以根据这些输入张量和模型中的参数(例如权重张量)进行推理计算。
下面结合图5所示的处理单元23与加速单元24的内部结构图,具体说明处理单元23是如何调度加速单元24进行工作的。
如图5所示,处理单元23内包含多个处理器核312和被多个处理器核312共享的高速缓存311。每个处理器核312包括取指令单元3121、指令译码单元3122、指令发射单元3123、指令执行单元3124。
取指令单元223用于将要执行的指令从存储器21中搬运到指令寄存器(可以是图5示出的寄存器堆3126中的一个用于存放指令的寄存器)中,并接收下一个取指地址或根据取指算法计算获得下一个取指地址,取指算法例如包括:根据指令长度递增地址或递减地址。
取出指令后,处理单元23进入指令译码阶段,指令译码单元3122按照预定的指令格式,对取回的指令进行解码,以获得取回的指令所需的操作数获取信息,从而为指令执行单元3124的操作做准备。操作数获取信息例如指向立即数、寄存器或其他能够提供源操作数的软件/硬件。
指令发射单元3123位于指令译码单元3122与指令执行单元3124之间,用于指令的调度和控制,以将各个指令高效地分配至不同的指令执行单元3124,使得多个指令的并行操作成为可能。多个指令的并行操作,示例性地为多个指令执行单元3124并行发送高速缓存311或寄存器堆3126内的数据到通信设备22或并行采样通信设备22内缓冲的数据并存储到高速缓存311或寄存器堆3126,存储控制单元3125用于对高速缓存311内数据的读写进行控制。
应当理解的是,在处理单元23包括多个处理器核312的情况下,并行采样通信设备22内缓冲数据的多个指令执行单元3124也可能是包含在不同的处理器核312内,并行向通信设备22写入数据的多个指令执行单元3124也可能是包含在不同的处理器核312内。进一步,在处理单元集群27包括多个处理单元23的情况下,并行采样通用异步收发传输器320内缓冲数据的多个指令执行单元3124也可能是包含在不同的处理单元23内,并行向通用异步收发传输器320写入数据的多个指令执行单元3124也可能是包含在不同的处理单元23内。
需要说明的是,指令发射单元3123将指令发射到指令执行单元3124后,指令执行单元3124开始执行指令。但如果该指令执行单元3124判断该指令应该是加速单元24执行的,则将其转发到相应的加速单元24执行。例如,如果该指令是一条神经网络推理(inference)的指令,指令执行单元3124不再执行该指令,而是将该指令通过总线发送到加速单元24,由加速单元24执行。
加速单元24内部包括多个核246(图5中示出了4个核,但本领域技术人员应当理解,加速单元24中也可以包含其它数目的核246)、命令处理器247、直接存储访问机制245、和总线通道241。
总线通道241是指令从总线进出加速单元24的通道,其中,从加速单元24出来的指令例如为加速单元24的处理结果写指令,指令执行单元3124接收该写指令并将加速单元24的处理结果写入高速缓存311或寄存器堆3126。
直接内存访问(DMA,Direct Memory Access)机制245是一些计算机总线架构提供的功能,它能使数据从附加设备直接写入计算机主板的存储器上。这种方式相比于设备之间所有的数据传输都要通过处理单元23的方式,大大提高了数据访问的效率。正是因为有这样的机制,加速单元24的核可以直接访问存储器21,读取神经网络模型中的参数(例如各节点的权重)等,大大提高了数据访问效率。
命令处理器247将由处理单元23发送至加速单元24的指令分配给核246执行,或将加速单元24的处理结果写指令发送给处理单元23的指令执行单元3124执行。指令执行单元3124将需要加速单元24执行的待执行指令序列发送给加速单元24。该待执行指令序列从总线通道241进入后,缓存在命令处理器247,由命令处理器247选择核246,将指令序列分配给其执行。另外,命令处理器247还负责核246之间的同步操作。
图6所示为本公开一个实施例的加速单元核246的内部结构图。参照图6,在一个实施例中,加速单元核236包括张量引擎610、池化引擎620、存储器拷贝引擎630、定序器650、指令缓存器640、片上内存660、常数缓冲器670。
命令处理器247分配给加速单元核246的指令序列首先进入指令缓存器640缓存。然后,定序器650从指令缓存器640中按照先进先出的顺序取指令,根据指令的性质分配给张量引擎610、池化引擎620、或存储器拷贝引擎630执行。张量引擎610负责处理神经网络模型中的卷积和矩阵乘法等相关操作。池化引擎620负责处理神经网络模型中的池化操作。存储器拷贝引擎630负责核246内的片上内存660存储的操作数向核246间共享的存储器、或者其它核246内的片上内存660的拷贝。定序器650根据取出的指令是卷积、矩阵乘法、池化、还是操作数拷贝等操作性质,决定将指令分配给张量引擎610,池化引擎620,还是存储器拷贝引擎630。
片上内存660是存储神经网络模型中的权重参数、以及神经网络模型实际使用时的输入参数和各种中间结果的核内存储器。常数缓冲器670是存储神经网络模型中除权重参数之外的其它常量参数(例如,神经网络模型中的超参)的缓冲器。如上所述,在处理单元23将神经网络模型预先配置在加速单元24的过程中,处理单元23通过指令的形式向加速单元24发送模型中的参数在存储器21中的地址。这些参数包括节点的权重和其它参数(例如超参)。对于权重,加速单元24在实际的神经网络模型运算时,将它从存储器21相应的位置取出,放在片上内存660中。对于其它参数,加速单元24在实际的神经网络模型运算时,从存储器21相应的位置取出,放在常数缓冲器670中。另外,当实际开始推理(inference)的指令由命令处理器247分配给核236执行后,指令中的输入参数(给神经网络模型的输入)也存储在片上内存660。另外,当张量引擎610和池化引擎620进行卷积或池化运算后,得到的各种中间结果也存放在片上内存660中。
基于此,处理单元23是服务器140需要将数据通过通信设备22进行传输的单元。通信设备22包括通用异步收发传输器,通用异步收发传输器供各个处理单元23与网络或其他设备间进行数据的串行传输。通用异步收发传输器可以是一个单独的器件,安装到服务器140上以供服务器140上各个处理单元23进行数据传输;也可以如图7所示通过片上总线330与处理单元23耦接并集成于同一片上系统300中,然后以片上系统的形式和处理单元23一同安装到服务器140上。图7所示片上系统300集成了一个处理单元23和一个通用异步收发传输器320,但本领域技术人员应当理解,片上系统300也可以集成多个处理单元23和一个通用异步收发传输器320,具体一个通用异步收发传输器320负责多个处理单元23的数据传输过程可以参照前述内容,这里不再赘述。
图7的通用异步收发传输器320是本公开实施例主要改进的部分,后文会详细描述其实现细节。
需要强调的是,处理单元310无论是图3所示的中央处理器12还是图7所示的处理单元23,亦或是其它类型的处理器,通用异步收发传输器320都可以和处理单元310通过片上总线来集成为片上系统,然后以片上系统的形式应用在服务器140上。当然,片上系统还可以包括通用异步收发传输器320以及处理单元310以外的必要器件,这里不进行限定。
通用异步收发传输器
数据传输过程中,接收方处理单元310和发送方的处理单元310各配置一个通用异步收发传输器320,两个通用异步传输器320之间通过UART数据传输线连接。参照图3和图7,接收方和发送方的通用异步收发传输器320皆包括以下部分:
发送器:主要作用是用于串行通信的串行数据的发送,包括输出缓冲寄存器321和输出移位寄存器322,其中,输出缓冲寄存器321接收处理单元310从片上总线330上送来的并行数据,并加以保存;输出移位寄存器322接收从输出缓冲寄存器321送来的并行数据,并基于发送时钟把数据逐位移出到UART数据传输线上,即将并行数据转换为向网络或其他设备输出的串行数据。
接收器:主要作用是用于串行通信的串行数据的接收,包括输入移位寄存器323和输入缓冲寄存器324,其中,输入移位寄存器323基于接收时钟把出现在UART数据传输线上的数据逐位移入,当数据装满后并行送往输入缓冲寄存器324,即将网络或其他设备通过UART数据传输线传来的串行数据转换成并行数据;输入缓冲寄存器324从输入移位寄存器323中接收并行数据,然后由处理单元310取走。
值得注意的是,UART协议不使用时钟信号来同步发送方的输出移位寄存器322和接收方的输入移位寄存器323,而是以异步方式传输数据,即发送方的发送时钟和接收方的接收时钟不要求同频。发送方的输出移位寄存器322根据发送时钟确定的发送速率来发送数据,接收方的输入移位寄存器323根据接收时钟确定的接收速率对输入数据进行采样,只要接收速率相对于发送速率的偏差位于误差允许的范围内,接收方即可准确接收数据。
数据传输速率发生器325,将发送方的发送速率作为目标传输速率,然后基于目标传输速率确定上述接收速率,并和输入移位寄存器323连接以将接收速率发送给输入移位寄存器323。数据传输速率发生器325是本公开实施例主要改进的部分,其包括的各具体部件以及如何基于目标传输速率确定接收速率将在下文中详细描述。
控制寄存器326,接收处理单元310送来的控制字,控制字的内容决定输出移位寄存器322和输入移位寄存器323与网络或其他设备通信时的数据格式等,数据格式例如数据字符的位数、有无奇偶校验、奇校验还是偶校验、停止位的位数等参数。
需要说明的是,通用异步收发传输器320的传输模式为数据包形式,数据包涉及起始位、数据帧、奇偶校验位和停止位,其中,
(1)起始位,当不传输数据时起始位为高电平,若要开始数据传输则发送方的UART将起始位从高电平拉到低电平并保持1个时钟周期,因而起始位占1位。接收方的UART在检测到高到低电平跃迁时便开始采集数据帧中的位。
(2)数据帧包含所传输的实际数据,如果使用奇偶校验位,数据帧长度可以是5位到8位;如果不使用奇偶校验位,数据帧长度可以是9位。
(3)奇偶校验位,用来描述数字是偶数还是奇数,接收方的UART通过奇偶校验位判断传输期间是否有数据发送改变。奇偶校验位占1位,如果奇偶校验位为0,则数据帧中的1或逻辑高位总机应为偶数;如果奇偶校验位为1,则数据帧中的1或逻辑高位总计应为奇数。
(4)停止位,为了表示数据包结束,发送方的UART将数据传输线从低电压驱动到高电压并保持1到2位时间,因而停止位占1到2位。
状态寄存器327,存放着UART接口的各种状态信息,例如输出缓冲寄存器321是否空、输入缓冲寄存器324内的输入字符是否准备好。在通信过程中,当某种状态符合时状态寄存器的相应位会置“1”,以便让处理器12查询。
基于以上有关数据包所述的内容,可知:数据包内至少会包括1位的起始位、5位的数据帧和1位的停止位,即数据包至少有7位;以及,数据包内至多会包括1位的起始位、9位的数据帧(或者8位的数据帧+1位的奇偶校验位)和2位的停止位,即数据包至多有12位。记数据包内共有w位,若采样数据包不发生错误,需确保接收方对第w位数据的采样时刻在发送速率对应的单比特数据发送周期T1的(w-1)倍至w倍之间。由于接收方的输入移位寄存器323采样数据是发生在每位数据的中央,即若记接收速率对应的单比特数据接收周期(w-1)为T2,即输入移位寄存器323采样第i位数据的时刻是在(i-1)×T2+0.5×T2。这样,单比特数据接收周期T2需满足如下公式(1)所示的条件。
(w-1)×T1<(w-1)×T2+0.5×T2≤w×T1 (1)
以一种常见的数据包结构为例:数据包内包括1位的起始位、8位的数据帧、1位的奇偶校验位和1位的停止位,则w=11,且基于以上公式(1)确定单比特数据接收周期T2需满足如下公式(2)所示的下条件。
10T1<10.5T2≤11T1 (2)
基于上述公式(2),确定单比特数据接收周期T2相对于单比特数据发送周期T1的偏差率|T2-T1|/T1应在0.5/10.5之内,这样接收方的输入移位寄存器323能够正确采集数据包,即,单比特数据接收周期T2相对于单比特数据发送周期T1的偏差具有约5%的误差允许范围。
数据传输速率发生器
相关技术中,在正确采集数据包的前提下为了避免切换时钟信号,可以采用二步分频的方式将时钟频率转变为接收速率的信号,但如何高效找到二步分频中的两个降频系数较为不易。
图8所示为本公开实施例中解决上述问题的数据传输速率发生器325的结构示意图。参照图8,数据传输速率发生器325包括:第一寄存器3251和第二寄存器3252,其中,第一寄存器3251用于存储第一降频系数n,第二寄存器3252用于存储第二降频系数p。数据传输速率发生器325还包括第一降频器3253和第二降频器3254,其中,第一降频器3253用于接收接收时钟3255的时钟信号clk,并和第一寄存器3251连接以按照第一寄存器3251存储的第一降频系数n将时钟信号clk降频为中间时钟信号aux;第二降频器3254分别与第一降频器3254以及第二寄存器3252连接,以将第一降频器3254生成的中间时钟信号aux按照第二寄存器3252存储的第二降频系数p降频为调整后传输速率信号Rec。上述接收时钟3255为通用异步收发传输器的现有元件,在设置位置上可以是直接设置在数据传输速率发生器325内,作为数据传输速率发生器325内部的元件。
一些实施例中,数据传输速率发生器325为比特率发生器,即最终确定的接收速率为接收比特率,相应地,上述中间时钟信号aux和调整后传输速率信号Rec分别为中间比特率信号和调整后传输比特率信号;以及,第一降频器3253是将时钟信号clk的周期乘以第一降频系数n,得到中间比特率信号的周期;第二降频器3254是将中间比特率信号的周期乘以第二降频系数p,得到调整后传输比特率信号的周期。
另一些实施例中,数据传输速率发生器325为波特率发生器,即最终确定的接收速率为接收波特率,相应地,上述中间时钟信号aux和调整后传输速率信号Rec分别为中间波特率信号和调整后传输波特率信号;以及,第一降频器3253是将时钟信号clk的周期乘以第一降频系数n,并乘以单码元含有比特数,得到中间波特率信号的周期;第二降频器3254是将中间波特率信号的周期乘以第二降频系数p,得到调整后传输波特率信号的周期。
具体地,第一降频系数n根据目标单比特占有周期数F1和第一参数a的比F1/a确定,第二降频系数p根据目标单比特占有周期数F1和第一降频系数n的比F1/n确定,这样时钟信号clk经第一降频器3253以及第二降频器3254降频后,对于调整后传输比特率信号来说,其周期由时钟信号clk的周期与目标单比特占有周期数F1的乘积确定;对于调整后传输波特率信号来说,其周期由时钟信号clk的周期与目标单比特占有周期数F1以及单码元含有比特数的乘积确定。由于目标单比特占有周期数F1表示发送方发送单比特数据所需时间占有的接收方接收时钟3255的时钟周期数,因而,上述调整后传输比特率信号的周期能够匹配发送方发送比特率的周期,上述调整后传输波特率信号的周期能够匹配发送方发送波特率的周期。
需要说明的是,第一降频系数n和第二降频系数p可以使用软件方式来确定。示例性地,在服务器140的已有计算模块内配置通过上述方法计算第一降频系数n和第二降频系数p的程序,这样计算模块在获取目标单比特占有周期数F1和第一参数a后即可计算得到第一降频系数n和第二降频系数p。由以上内容可知,算出第一降频系数n和第二降频系数p是为了最便利地计算出近似单比特占有周期数F1*=n×p,且使得快速算出的近似单比特占有周期数F1*接近目标单比特占有周期数F1,从而使得调整后传输速率信号Rec(调整后传输速率信号Rec的周期与时钟信号clk的周期之比为近似单比特占有周期数F1*)和发送方发送速率之间的周期匹配。换言之,本公开实施例中若目标单比特占有周期数F1改变,则无需修改接收时钟3255的时钟频率,只要通过软件方法确定第一降频系数n和第二降频系数p即可动态适配。
在实践中,第一降频系数n和第二降频系数p相结合对时钟信号clk进行降频,可以通过两个计数器实现,即上述第一降频器3253和第二降频器3254各采用一个计数器。记第一降频器3253采用的计数器为低位计数器,第二降频器3254采用的计数器为高位计数器,则数据传输速率发生器325生成调整后传输速率信号的过程为:低位计数器接收时钟信号clk并对接收的时钟信号clk进行计数,其中,低位计数器每计数完n个时钟信号clk时向高位计数器发送一个中间时钟信号aux;高位计数器接收中间时钟信号aux并对接收的中间时钟信号aux进行计数,其中,高位计数器每计数完p个中间时钟信号aux向输入移位寄存器323发送一个调整后传输速率信号Rec。这里,若数据传输速率发生器325为比特率发生器,则输入移位寄存器323在调整后传输速率信号Rec的触发下接收一bit数据;若数据传输速率发生器325为波特率发生器,则输入移位寄存器323在调整后传输速率信号Rec的触发下接收一个码元的数据。
进一步,上述整个计数过程中,低位计数器每计数完n个时钟信号clk时高位计数器记一个数,在低位计数器没有计数完n个时钟信号的时段里高位计数器可以处于低功耗的状态,即高位计数器可以采用门控技术,这样在低位计数器每计数完n个时钟信号时高位计数器被中间时钟信号aux触发而计数,但低位计数器没有计数完n个时钟信号的时段里高位计数器处于节能状态,从而有利于计数功耗的降低。
在一些实施例中,上述目标单比特占有周期数F1通过接收时钟3255的时钟频率除以目标比特率确定,所述目标比特率为发送方发送数据的比特率。在通信领域,时钟频率以及数据传输的比特率都在兆赫兹的量级,通过时钟频率和目标比特率这两个较大的数值直接确定目标单比特占有周期数F1,有利于减少频率换算周期以及周期相除带来的误差。进一步,一些情境下常常先已知发送方发送数据的波特率,即目标波特率,因而可以通过目标波特率乘以单码元含有比特数确定上述目标比特率。
值得注意的是,由于计数器只能记整数,而比F1/a以及比F1/n不一定为整数,因而可以将比F1/n去掉小数点后部分来得到第一降频系数n,以及,将比F1/n四舍五入来得到第二降频系数p。
对于上述共有11位的常见数据包,第一参数a可以设置为任一个不小于10的值,以确保单比特数据接收周期T2相对于单比特数据发送周期T1的偏差率|T2-T1|/T1在0.5/10.5之内,具体原因如下:
由于第一降频系数n为比F1/n去掉小数点后部分得到的,假设比F1/n的小数点后部分为f1,则比F1/a有如下公式(3)所示的表达式。
F1/a=n+f1 (3)
由于0≤f1<1,因而有如下所示的公式(4)。
a<F1/n(4)
由于第二降频系数p为比F1/n四舍五入后得到的,因而有如下公式(5)所示的表达式。
-0.5<p-F1/n≤0.5 (5)
假设接收时钟3255的时钟周期为Tclk,则单比特数据接收周期T2具有如下公式(6)所示的表达式。
T2=Tclk×n×p (6)
并且,单比特数据发送周期T1具有如下公式(7)所示的表达式。
T1=Tclk×F1 (7)
因而,单比特数据接收周期T2相对于单比特数据发送周期T1的偏差率具有如下公式(8)所示的表达式。
|T2-T1|/T1=|n×p-F1|/F1=n×|p-F1/n|/F1 (8)
结合公式公式(5)和公式(8),可得单比特数据接收周期T2相对于单比特数据发送周期T1的偏差率满足公式(9)所示的表达式。
0≤|T2-T1|/T1≤0.5/(F1/n) (9)
结合公式(4)和公式(9),可得单比特数据接收周期T2相对于单比特数据发送周期T1的偏差率始终满足公式(10)所示的表达式。
0≤|T2-T1|/T1<0.5/a (10)
基于公式(10),确定第一参数a为任一个不小于10的值,这样|T2-T1|/T1确保小于5%。示例性地,第一参数a选择16,这样由四个触发器构建的计数器被充分利用。
由以上内容可知:在接收方得知发送方发送数据的波特率,即得知目标波特率的情况下,先将目标波特率乘以单码元含有比特数确定目标比特率;此情况下,发送方和接收方之间传输的数据以码元为单位,接收方的数据传输速率发生器325为数据传输波特率发生器,第一降频器3253是将时钟信号clk的周期乘以第一频系数n,并乘以单码元含有比特数,得到中间波特率。鉴于此,可以直接通过接受时钟3255的时钟频率除以目标波特率得到单码元传输所用时间占有的接收时钟周期数F1',然后将F1'/a去掉小数点后部分得到的整数确定为等效的第一降频系数n',将F1'/n四舍五入后得到的整数确定为等效的第二降频系数p',并将时钟信号clk的周期乘以等效的第一降频系数n'和等效的第二降频系数p'得到的值确定为调整后传输波特率信号的周期。
例如,接收时钟3255的时钟周期为100MHz,目标波特率为1.8MHz,第一参数a=16,则单码元传输所用时间占有的接收时钟周期数F1'=100MHz/1.8MHz=55.5555555;由于F1'/a=3.4722222,因而等效的第一降频系数n'=3;由于F1'/n=18.51,因而等效的第二降频系数p'=19,这样调整后传输波特率信号的周期为时钟信号clk周期的57倍,而发送方发送单码元所用时间占有的接收时钟周期数为55.5555555,因而偏差率为2.5%,小于5%的误差,即满足数据准确传输的要求。
又例如,接收时钟的时钟周期和目标波特率不变,第一参数a=12,则单码元传输所用时间占有的接收时钟周期数F1'不变,等效的第一降频系数n'=4,等效的第二降频系数p'=14,这样调整后传输波特率信号的周期为时钟信号clk周期的56倍,因而偏差率为1.25%,小于5%的误差,即满足数据准确传输的要求。
需要说明的是,上述第一降频系数n和第二降频系数p可以在接收方得知某一发送方的发送速率后利用服务器140内已有的计算模块计算,然后写入第一寄存器3251和第二寄存器3252。发送方的发送速率在发送方和接收方建立连接关系而握手的过程中,已传输给接收方,因而接收方和发送方之间进行数据传输前已获得发送方的发送速率,从而上述第一降频系数n和第二降频系数p能够先于数据传输过程而确定,继而能够预先配置上述接收速率。需要强调的是,对于一个接收方来说,由于不同的发送方往往有不同的发送速率,因而不同的发送方往往对应不同的第一降频系数n和第二降频系数p,由于一个发送方并非只向一个接收方发送数据,一个接收方也并非只接收来自一个发送方的数据,因而即使接收方能预先获知各发送方的发送速率,也不能将自身的接收速率配置成一个固定的匹配某一发送方发送速率的数值。
数据传输速率发生方法
图9是本公开实施例提供的数据传输速率发生方法的流程图。参照图9,该方法在一个实施例中包括:
步骤S110,接收时钟信号;
步骤S120,按照第一降频系数将所述时钟信号降频为中间时钟信号,其中,第一降频系数根据目标单比特占有周期数和第一参数的比确定;
步骤S130,将中间时钟信号按照第二降频系数降频为调整后传输速率信号,其中,第二降频系数根据目标单比特占有周期和第一降频系数的比确定。
本公开实施例的方法通过以上所述的任一种数据传输速率发生器325执行,数据传输速率发生器325通过第一降频系数和第二降频系数对接收时钟3255产生的时钟信号进行降频,最后确定的调整后传输速率信号的频率即为数据的接收频率,且经上述相关内容证明这样的接收速率能够近似匹配目标发送速率,从而在接收时钟3255不改变时钟频率的情况下确保数据的正确传输。
上述方法实施例的实现细节已经在前面的装置实施例部分详细描述,可以参考前面的装置实施例的部分,故不赘述。
本公开实施例的商业价值
本公开实施例经试验验证,数据传输速率发生器325能够使得同一接收方正确接收来自不同发送方的数据,因而较好地满足了基于互联网的全球协作需求,具有良好的市场前景。
应该理解,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于装置和系统实施例中描述的方法,所以描述的比较简单,相关之处参见其他实施例的部分说明即可。
应该理解,上述对本说明书特定实施例进行了描述。其它实施例在权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
应该理解,本文用单数形式描述或者在附图中仅显示一个的元件并不代表将该元件的数量限于一个。此外,本文中被描述或示出为分开的模块或元件可被组合为单个模块或元件,且本文中被描述或示出为单个的模块或元件可被拆分为多个模块或元件。
还应理解,本文采用的术语和表述方式只是用于描述,本说明书的一个或多个实施例并不应局限于这些术语和表述。使用这些术语和表述并不意味着排除任何示意和描述(或其中部分)的等效特征,应认识到可能存在的各种修改也应包含在权利要求范围内。其他修改、变化和替换也可能存在。相应的,权利要求应视为覆盖所有这些等效物。