首页 / 通信方法和装置

通信方法和装置实质审查 发明

技术领域

[0001] 本申请实施例涉及信息技术领域,特别涉及一种通信方法和装置。

相关背景技术

[0002] 外围器件互联总线(peripheral component interconnect express,PCIe)是一种高速串行计算机扩展总线标准,用于实现处理器和外部设备的连接,这些外部设备被称为PCIe设备。
[0003] 一般来说,PCIe协议使用32比特位(bits)PCIe标识(identify,ID)来标识系统中的PCIe设备,32位包括:16bits域(domain),8bits总线(bus),5bits设备(device),3bits功能(function)。8位总线标识bus ID、5位设备标识device ID和3位功能标识function ID,简称为BDF(BDF即表示总线,设备,功能(bus device function,BDF))。Bus ID为每个PCIe域提供了256个总线号。通常情况下,计算机系统支持一个PCIe域,即整个计算机系统提供256个总线号。
[0004] 具体地,对PCIe设备配置空间寄存器的访问一般有两种方式:内存访问和输入输出(input output,I/O)访问,I/O访问可简单理解为用户通过输入或输出(IN/OUT)指令访问PCIe设备配置空间寄存器,具体地,可通过I/O端口来对PCIe设备的前256个字节进行访问。内存访问即将PCIe设备配置空间全部映射到内存中,在确定设备内存地址后,即可通过内存读写的方式进行PCIe设备配置空间寄存器的访问。
[0005] 通过内存访问方式访问总线设备(如,PCIe设备)配置空间寄存器时,访问指令发出后处理器处于等待状态,对访问延时有约束,并且无法跨主机实现配置空间寄存器的访问。如何提高访问总线设备配置空间寄存器的性能,成为亟待解决的问题。

具体实施方式

[0060] 下面将结合附图,对本申请实施例中的技术方案进行描述。
[0061] 本申请中涉及计算机系统中的处理器访问外部设备的配置空间。其中,计算机系统可以是服务器,或者是终端。终端包括但不限于台式机、笔记本电脑、智能手机等用户系统。为了便于理解,下面对计算机系统的结构进行介绍。
[0062] 参见图1所示的计算机系统的结构示意图,计算机系统包括处理器101、输入输出设备(input output device,I/O device)102、内存103、缓存104、内存管理单元(memory management unit,MMU)105、输入输出内存管理单元(input output management unit,IOMMU)106、外存107和总线108。
[0063] 处理器101包括至少一个内核(core)。该内核也称作计算引擎。其中,每个内核可以独立地执行任务。当处理器101包括多个内核时,可以对来自应用的任务进行划分,使得应用能够充分利用多个内核,在特定的时间内执行更多任务。在本实施例中,处理器101可以是主处理器,例如为中央处理机(Central Processing Unit,CPU)。
[0064] 输入输出设备102是指具有输入数据和/或输出数据能力的硬件设备。输入输出设备102可以分为输入设备和输出设备。其中,输入设备可以包括鼠标、键盘、操作杆、触控笔、麦克风等设备,输出设备可以包括显示器、扬声器等设备。
[0065] 内存103也称作内存储器或主存储器,用于暂时存放处理器101中的运算数据。进一步地,内存103还用于暂时存放与外存107交换的数据。内存103通常可以采用动态随机存取存储器DRAM或者静态随机存取存储器(static random access memory,SRAM)等存储介质实现。
[0066] 缓存104(本实施例中是指处理器缓存,如CPU缓存)是用于减少处理器101访问内存103所需平均时间的部件。参见图1,在金字塔式存储体系中,缓存104位于自顶向下的第二层,仅次于处理器101的寄存器(图1中未示出),高于内存103(内存103位于自顶向下的第三层)。通常情况下,缓存104的容量远小于内存103,但访问速度可以接近处理器101的频率。
[0067] 内存管理单元105是一种用于处理数据访问请求的计算机硬件。内存管理单元105具体用于对数据访问请求中的虚拟地址(virtual address,VA)进行映射。其中,内存管理单元105可以截获处理器101的内核发出的数据访问请求,将数据访问请求中的虚拟地址映射(或者翻译)为物理地址(physical address,PA),以便于根据该物理地址访问内存103。
[0068] 输入输出内存管理单元106实质是一种内存管理单元。类似于内存管理单元105将处理器101可见的虚拟地址映射为物理地址,输入输出内存管理单元106用于将输入输出设备可见102的虚拟地址(也可以称作设备地址或I/O地址)映射为物理地址。
[0069] 外存107也称作外部存储器、辅存,通常用于持久化保存数据。例如,外存107可以持久化存储处理器101中的运算数据。即使供电异常,已经写入该外存107的数据仍然能够保存,避免了数据丢失。具体实现时,外存107包括至少一个非易失性存储器1071,当外存包括多个非易失性存储器时,这多个非易失性存储器可以是相同类型,也可以是不同类型。例如,在图1的示例中,外存107可以包括两种类型的非易失性存储器,例如为存储级存储器(storage class memory,SCM)和固态硬盘(solid state drive,SSD)。
[0070] 总线108用于将计算机系统的各个功能部件连接。总线108是计算机系统各种功能部件之间传送信息的公共通信干线。总线108可以是由导线形成的传输线束。根据连接对象不同,总线108还可以分为内部总线和外部总线。
[0071] 其中,内部总线采用内部总线协议传送信息。内部总线协议包括用于访问所述计算机系统的内存空间的总线协议。外部总线采用外部总线协议传送信息。外部总线协议包括用于访问所述计算机系统的外存空间的总线协议。其中,内存空间是指内存的地址空间,外存空间是指外存的地址空间。
[0072] 在一些实施例中,内部总线协议包括但不限于外设部件互连标准(peripheral component interconnect,PCI)总线、外设部件互连标准高速(PCI Express,PCIe)协议、快速通道互联(IntelTM Quick Path Interconnect,QPI)协议、通用总线(universal bus)协议。外部总线协议包括但不限于小型计算机系统专用接口(small  computer systeminterface,SCSI)协议或者串行连接小型计算机系统专用接口(Serial Attached SCSI,SAS)协议。
[0073] 需要说明的是,图1所示的计算机系统是以外存107为远端外存进行示例说明。如图1所示,外存107包括网卡1072。该网卡1072例如可以是smart NIC网络接口卡(也即网络适配卡)。外存107通过该网卡1072接入网络,进而通过网络与计算机系统101的其他部件连接。网络可以是有线通信网络,如光纤通信网络,也可以是无线通信网络,例如是无线局域网(wireless local area network,WLAN)或者是第五代(the fifth generation,5G)移动通信网络。
[0074] 在一些可能的实现方式中,计算机系统的外存107也可以是本地外存,计算机系统的其他部件如处理器101可以通过总线108连接上述本地外存。在另一些可能的实现方式中,计算机系统可以既包括远端外存,又包括本地外存。此外,本申请实施例可以适用于集中式存储,或者分布式存储场景,本实施例对此不作限定。
[0075] 示例性地,本申请实施例中提供的访问总线设备的配置空间寄存器的方式还可以应用于图2所示的跨网络通信的服务器集群,如图2所示的数据中心。其中,图2中所示的交换机或服务器内部结构如上文图1中所示。
[0076] 另外,本申请中涉及的计算机系统所支持的内部总线协议包括通用总线协议,计算机系统之间可以建立传输层的连接。其中,通用总线协议还可以称为灵衢总线协议或统一总线协议,一种总线协议标准,本申请对于该通用总线协议的名称不做限定。
[0077] 通用总线协议打破现有各种协议壁垒,去除中间不必要的转换开销,从而实现极致低时延。通用总线协议定义了独立的事务层和传输层。传输层之间有连接,事务层之间无连接。一个Host内的所有事务都承载在一个传输层上。通用总线协议包含传输层和事务层,传输层负责网络丢包重传,保证可靠传输,事务层处理各自不同的事务。传输层从网络收到包,剥离传输层包头,转发给事务层。
[0078] 通用总线协议报文格式如图3所示。具体地,通用总线协议报文格式中的字段定义如下表1所示:
[0079] 表1
[0080]
[0081] 图4是本申请实施例提供的一种主机的结构示意图。该主机(如图4中所示的主机A)可以应用于图2所示的跨网络通信的应用场景中。如图4所示,主机A包含网络管理单元、双倍速率(Double Data Rate,DDR)内存、以及总线设备(如图4中所示的设备1(device 1,Dev1)和Dev2)。系统上电启动后,网络管理单元可以扫描发现Dev1和Dev2,为Dev1和Dev2分配网络地址1(network address 1)和网络地址2。其中,网络管理单元为Dev1和Dev2分配网络地址的具体方式本申请不做限定,网络管理单元扫描整个网络的设备端口即可,如,通过逐跳机制或通过管理网络等方式扫描整个网络的设备端口。
[0082] 具体地,图4所示的网络管理单元中包括处理核(core)和控制器(controller),其中,控制器上存在一个设备总线的入口引擎(engine),系统在设计时为该入口引擎预留一段地址空间(如,预留门铃(doorbell)、发送队列条目(Send Queue Entry,SQE)、接收队列条目(receive Queue Entry,SQE)和完成队列条目(Complete Queue Entry,CQE)等信息所需地址空间)。
[0083] 上文中结合图1至图4简单介绍本申请能够应用的场景以及涉及的主机内部逻辑单元,为了便于理解本申请实施例,对本申请涉及的一些基本概念做简要说明。
[0084] 1、PCIe总线:
[0085] PCIe总线作为处理器系统的I/O总线,其作用与外部控制器接口(Peripheral Component Interconnect,PCI)总线类似,主要目的是为了连接处理器系统中的外部设备。PCIe总线使用端到端的连接方式,在一条PCIe链路的两端各连接一个设备,这两个设备互为数据发送端和数据接收端。
[0086] 典型的PCIe系统包括根复合体(Root Complex,RC)、PCIe交换设备(PCIe switch)和PCIe总线设备。其中,RC可以位于处理器上,RC本身占用一个bus号。PCIe switch包含上游端口和下游端口,上游端口用于连接RC的根端口(root port,RP)或者其他PCIe switch的下游端口。RC的根端口、PCIe switch的上游端口和下游端口又可以称为桥(bridge)设备,桥设备用于连接其他桥设备或者总线设备。
[0087] 需要说明的是,PCIe switch可以是单独的物理设备,例如物理交换机或交换芯片;也可以是在芯片中实现的硬件功能模块,例如,可以为集成在处理器芯片中硬件功能模块,实现PCIe switch的功能。
[0088] 如图5所示,为一种PCIe系统中总线号分配示意图,其中,中央处理器(Central Processing Unit,CPU)上存在多个根端口(Root Port,RP),图中以2个RP为例,多个RP可以位于一个或多个RC(图中未示出)上。示例性的,RP0可以连接到总线设备或者桥设备(图中未示出),RP1连接到PCIe switch(交换机)的上游端口(Uplink Port,UP),PCIe switch包括m+1个下游端口(Downlink Port,DP),标记为DP_0、DP_1、…、DP_m,每个下游端口下连接有一个总线设备,图1所示的总线设备标记为EP_0、EP_1、…、EP_m。示例性的,连接上游端口UP的根端口RP1占用bus X,RP1与UP之间的连接(link)占用bus N。此时,PCIe switch内部上游端口到m+1个下游端口的连接占用bus N+1,各下游端口与对应的总线设备之间的连接分别占用bus N+2、bus N+3、…、bus N+2+m。其中,X为大于等于0的整数,N为大于X的整数。示例性的,当图示的2个RP位于不同的RC,且RP0所在的左侧RC首先枚举到时,X的取值取决于左侧RC下的PCIe结构占用的总线号的情况,例如,当左侧RC下的PCIe结构占用了5个bus号(即bus 0‑4被左侧RC及其下的PCIe结构占用)时,X的取值为5,N的取值为6;当图示的2个RP位于同一RC且该RC为处理器首先枚举到的RC时,X取值为0,假如左侧RC下的PCIe结构占用了5个bus号(即bus 0‑4被RC及RP0下的PCIe结构占用)时,此时N的取值为5。
[0089] PCIe设备可以分为两种,一种是桥设备,例如根端口RP、上游端口、下游端口,一种是总线设备(Endpoint,EP)。在PCI桥的两端,分别连接了两条总线,分别是上游总线(Primary Bus)和下游总线(Secondary Bus)。PCIe桥可以管理其下的PCIe子树。桥设备具有Subordinate Bus Number、Secondary Bus Number和Primary Bus Number寄存器,Primary Bus Number寄存器存放该桥设备上游的PCIe总线号,Secondary Bus Number寄存器存放该桥设备下游的PCIe总线号,Subordinate Bus Number寄存器存放该桥设备下游的PCIe子树中编号最大的PCIe总线号,Subordinate Bus Number称为从属总线号。
[0090] 一般来说,PCIe协议使用32比特位(bits)PCIe标识(identify,ID)来标识系统中的PCIe设备,32位包括:16bits域(domain),8bits总线(bus),5bits设备(device),3bits功能(function)。8位总线标识bus ID、5位设备标识device ID和3位功能标识function ID,简称为BDF。Bus ID为每个PCIe域提供了256个总线号。通常情况下,计算机系统支持一个PCIe域,即整个计算机系统提供256个总线号。
[0091] 图5仅是给出一种PCIe系统下可能的总线分配举例,用于表示总线号分配情况。对本申请的保护范围不构成任何的限定。
[0092] 2、PCIe设备枚举:扫描并发现PCIe总线上所有设备的过程称为PCIe设备枚举过程。自个人电脑(Personal Computer,PC)在1981年被国际商用机器公司(International Business Machine,IBM)发明以来,主板上都有扩展槽用于扩充计算机功能。现在最常见的扩展槽是PCIe插槽,在计算机主板芯片内部,硬件控制模块大部分是以PCIe设备的形式挂载到了一颗或者几颗PCI或PCIe设备树上。固件和操作系统正是通过枚举设备树才能发现绝大多数即插即用设备的。
[0093] 计算机系统复位或者上电之后,软件首先要对PCIe总线进行扫描来枚举该总线下连接的所有设备。在扫描之前,软件能感知到的设备就是Host/PCI桥,同时还知道Host/PCI桥下面的总线号是0。
[0094] 每个PCIe Function的配置空间寄存器中都有一个供应商(Vendor)标识(identify,ID)的只读寄存器。Vendor ID是由外围部件互连专业组(Peripheral Component Interconnect Special Interest,PCI‑SIG)为每个厂商分配的16位的特定值。
PCIe设备枚举过程中,系统软件会遍历所有可能的Bus&Device&Function的组合,尝试去读取每个Bus&Device&Function位置的Vendor ID寄存器。根据读取到的结果,就能判断某个Bus&Device&Function所定位的Function是否真实存在。简而言之,PCIe设备枚举过程,是系统软件访问PCIe设备配置空间寄存器的过程。
[0095] 3、配置空间:早期的PCI时期,系统为每个PCIe设备分配的配置空间大小为256个字节(bytes),到PCIe时期,随着设备性能增强,PCIe设备的配置空间扩展至4K个bytes。需要说明的是,PCIe一共支持256条bus,32个device和8个function,在满负载的情况下,所需的配置空间大小=4K*256*32*8=256M,这256M的配置空间是为PCIe设备准备的,系统不可用。具体地,PCIe设备发展向前兼容PCI,每个PCIe设备的配置空间的前256个bytes是PCI空间,后(256‑4K)个bytes是PCIe扩展空间。
[0096] 每个PCIe设备都有自己独立的一段配置空间,该一段配置空间是该PCIe设备的,系统会给这个设备配置一段内存空间,CPU访问这段内存空间即访问该PCIe设备的配置空间。
[0097] 示例性地,PCIe设备出厂时,配置空间有默认的初始值。
[0098] 4、I/O访问和内存访问:X86系统中,对于PCIe设备的配置空间的地址映射包括I/O映射和内存映射,可以通过I/O访问和内存访问来访问PCIe设备的配置空间。
[0099] 具体地,PCIe设备的配置空间的访问离不开PCIe设备的bus,device,function的编号方式,bit[23:16]表示总线编号,用于存放bus号,共8比特(bit),可存放256条bus号;bit[15:11]表示设备编号,用于存放device号,共5比特(bit),可存放32个device号;bit[10:8]表示功能编号,用于存放function号,共3比特(bit),可存放8个function号,这也可以解释为什么PCIe一共支持256条bus,32个device和8个function。另外,bit[31]表示使能(enabled)位;bit[7:2]表示配置空间的寄存器编号;bit[1:0]恒为“00”。
[0100] 根据协议,X86上使用了两个I/O端口寄存器:config_address(物理地址是0CF8h)和config_data(物理地址是CFCh),来访问PCIe设备的配置空间。其中,OUT和IN在汇编中是端口读写操作指令,端口是主机与外设进行数据交换使用的,分为数据端口、状态端口和控制端口,PC机给每一个端口分配了一个地址,所有的端口成线性排列,形成一个独立于内存空间的I/O地址空间,一般用16进制表示,例如,端口地址的范围是0000H‑FFFFH。
[0101] 示例性地,在CF8h端口填入BDF即可以在CFCh上写入或者读出PCIe设备的配置空间的内容。
[0102] I/O访问可以简单理解为用户通过输入或输出(IN/OUT)指令访问一段存储空间用户,部分PCIe设备可以映射到I/O空间中,开发者通过I/O端口访问。例如,通过CF8h/CFCh端口对PCIe设备的前256个bytes进行访问。
[0103] 应理解,I/O访问机制只能访问到function的4K个bytes配置空间中的前256个bytes
[0104] 为了便于理解,结合具体的示例说明如何通过I/O访问的方式访问PCI设备的配置空间:
[0105] 示例一:
[0106] 步骤一:PCI设备的总线号被填写到I/O地址CF8h的[23:16]bits、PCI设备的设备号被填写到I/O地址CF8h的[15:11]bits、PCI设备的功能号被填写到I/O地址CF8h的[10:8]bits、需要访问的寄存器双字地址被填写到I/O地址CF8h的[7:2]bits、CF8h的最高位为配置位,该位设置为1。
[0107] 步骤二:对于写操作,将设备的特定信息组合成一个双字(4bytes)后,写到CFCh地址;对于读操作,将设备的特定信息组合成一个双字后,把数据从CFCh读回来。
[0108] I/O访问的方式可以访问PCIe设备的前255bytes配置空间。
[0109] 内存映射即将PCIe设备配置空间全部映射到内存中,用户在确定设备地址后,即可通过内存读写的方式进行访问PCIe设备配置空间。内存映射的方法,可以访问4K bytes地址空间,但访问操作是一个内存访问操作。
[0110] 具体地,当软件访问指定PCIe设备的配置空间时,需要正确计算该配置空间映射到内存的具体地址。其中,bus No=0,device No=0,func No=0的地址刚好是BAR,一条总线占用的最大空间计算如下:
[0111] SIZEPERBUS=4K*32*8=256K=1M=100000h
[0112] SIZE_PER_DEVICE=4K*8=8000h
[0113] SIZE_PER_FUNC=4K=1000h
[0114] 软件访问总线号为bus No,设备号为Dev No,功能号为func No的PCIe设备的配置空间的计算公式是:
[0115] Memory Address=PCIe Configuration Register Base Address Register(BAR)+busNo*SIZE_PER_BUS+devNo*SIZE_PER_DEVICE+funcNo*SIZE_PER_FUNC+offset[0116] 为了便于理解,结合具体的示例说明如何通过内存访问的方式访问PCI设备的配置空间:
[0117] 示例二:软件访问总线号bus No为15h,设备号Dev No为00h,功能号func No为05h,寄存器偏移(offset)为84h的PCIe设备的配置空间。
[0118] 步骤一:通过上述的PCIe设备的配置空间的计算公式计算得到待访问的内存地址:
[0119] Memory Address=F0000000h+15h*100000h+00h*8000h+05h*1000h+84h=F1505084h
[0120] 步骤二:确定设备内存地址后,即可通过内存读写的方式进行访问PCIe设备配置空间。
[0121] 5、总线设备枚举:扫描并发现通用总线上所有设备的过程称为总线设备枚举过程。与上述的PCIe设备枚举过程类似,总线设备枚举过程,也可以理解为是系统软件访问总线设备配置空间寄存器的过程。
[0122] 6、总线设备配置空间寄存器:本申请中总线设备配置空间寄存器还可以称为总线设备空间寄存器,或者简称为总线配置空间,总线设备空间等。应理解,总线设备的资源、配置和管理主要包括物理设备的公共配置管理,资源配置管理,互联配置管理,内部的任务队列资源,内存资源,网络资源等。设备资源池化时,不需要每个主机来管理设备的公共配置,资源配置和互联配置,主机使用设备内部的内存,网络等资源即可。
[0123] 为了便于理解,结合图6和图7中的(a)简单介绍总线设备配置空间寄存器。
[0124] 如图6所示,总线设备配置空间寄存器包括不同类型的寄存器,不同类型的寄存器对应不同的地址块。具体地,配置空间寄存器被划分为不同的地址块(如图6中所示的基础块(basic block)、路由块(route block)、性能块(capbility block)、端口块(port block)和用户自定义块(user defined block)等),不同的地址块对应不同类型的配置空间寄存器;或者说,不同类型的寄存器对应不同的地址区间。
[0125] 如图7中的(a)所示,某种类型的寄存器对应的地址块可以划分为不同片段(segment),不同的片段对应不同的地址空间,一个片段包括预留位(reserved)和4Kbyte的地址空间对应的寄存器。
[0126] 另外,为了便于理解本申请实施例,做出以下几点说明。
[0127] 第一,在本申请中示出的“至少一个”是指一个或者多个,“多个”是指两个或两个以上。另外,在本申请的实施例中,“第一”、“第二”以及各种数字编号(例如,“#1”、“#2”等)只是为了描述方便进行的区分,并不用来限制本申请实施例的范围。下文各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定,应该理解这样描述的对象在适当情况下可以互换,以便能够描述本申请的实施例以外的方案。此外,在本申请实施例中,“S810”等字样仅为了描述方便作的标识,并不是对执行步骤的次序进行限定。
[0128] 第二,本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其他实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
[0129] 第三,本申请实施例中涉及的“保存”,可以是指的保存在一个或者多个存储器中。该一个或者多个存储器,可以是单独的设置,也可以是集成在编码器或者译码器,处理器、或通信装置中。该一个或者多个存储器,也可以是一部分单独设置,一部分集成在译码器、处理器、或通信装置中。存储器的类型可以是任意形式的存储介质,本申请并不对此限定。
[0130] 第四,本申请实施例中涉及的“包括”(也称“includes”、“including”、“comprises”和/或“comprising”)当在本说明书中使用时指定存在所陈述的特征、整数、步骤、操作、元素、和/或部件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元素、部件、和/或其分组。
[0131] 第五,本申请实施例中涉及的“如果”可被解释为意指“当...时”(“when”或“upon”)或“响应于确定”或“响应于检测到”。类似地,根据上下文,短语“如果确定...”或“如果检测到[所陈述的条件或事件]”可被解释为意指“在确定...时”或“响应于确定...”或“在检测到[所陈述的条件或事件]时”或“响应于检测到[所陈述的条件或事件]”。
[0132] 第六,本申请实施例中对各种所述示例的描述中所使用的术语只是为了描述特定示例,而并非旨在进行限制。如在对各种所述示例的描述和所附权利要求书中所使用的那样,数形式“一个(“a”,“an”)”和“该”旨在也包括复数形式,除非上下文另外明确地指示。
[0133] 第七,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0134] 上文结合图1简单介绍了本申请提供的通信方法适用的场景,以及介绍了本申请涉及的基本概念。并在基本概念中介绍了I/O访问和内存访问,通过内存访问方式访问总线设备(如,PCIe设备)配置空间寄存器时,访问指令发出后处理器处于等待状态,对访问延时有约束,并且无法跨主机实现配置空间寄存器的访问。例如,上述的内存访问方式,不适合多个主机应用场景,因为一个主机一套总线号,两个主机两套总线号,内存访问方式只适合在单个主机服务场景下的配置空间寄存器访问。
[0135] 本申请提出一种通信方法,在网络管理单元需要访问总线设备的配置空间寄存器时,网络管理单元可以通过在请求消息中携带总线设备的网络地址以及待访问的配置空间寄存器的信息,实现总线设备的配置空间寄存器的访问。无需通过内存读写的方式访问,因此该技术方案提供的通过请求消息实现总线设备的配置空间寄存器访问方式,可以避免内存读写的方式带来的时延要求高以及无法跨主机访问的缺点。
[0136] 下面将结合附图详细介绍本申请提供的通信方法。应理解,本申请实施例提供的通信方法可以应用于计算机系统中,例如,图2所示的跨网络访问的系统。
[0137] 还应理解,下文示出的实施例并未对本申请实施例提供的方法的执行主体的具体结构特别限定,只要能够通过运行记录有本申请实施例的提供的方法的代码的程序,以实现本申请实施例提供的方法即可。例如,本申请实施例提供的方法的执行主体可以是设备,或者,是设备中能够调用程序并执行程序的功能模块。
[0138] 图8是本申请提供的一种通信方法的示意性流程图。该通信方法可以应用于如图7中(b)所示的总线网络中,该总线网络包括网络管理单元和至少一个总线设备(如图7中(b)所示的总线设备#1、线设备#2…线设备#n),且网络管理单元和总线设备之间通过通用总线连接。其中,总线网络中可以包括多个主机,总线网络可以理解为有线总线网络区别于无线网络。
[0139] 具体地,该通信方法包括以下步骤:
[0140] S810,网络管理单元向总线设备发送请求消息,或者说总线设备接收来自网络管理单元的请求消息。
[0141] 具体地,该实施例中网络管理单元和总线设备之间通过通用总线连接。示例性地,该实施例中通用总线作为总线网络的局部总线,连接总线网络中的总线设备(还可以称为外部设备、端点设备等)。
[0142] 请求消息中包括总线设备的网络地址、第一指示信息和第一配置空间寄存器的信息。
[0143] 其中,总线设备的网络地址(network address)为网络管理单元为总线设备分配的地址。具体地,总线网络中可能包括至少一个总线设备,需要说明的是,该实施例中在网络管理单元访问总线设备的配置空间寄存器之前,网络管理单元可以发现总线网络中的总线设备,并为总线设备分配网络地址。
[0144] 例如,总线网络中包括网络管理单元和总线设备#1、总线设备#2以及总线设备#3,网络管理单元可以为总线设备#1分配网络地址#1、为总线设备#2分配网络地址#2以及为总线设备#3分配网络地址#3。当网络管理单元需要访问总线设备#1时,网络管理单元向总线设备#1发送请求消息#1,并在该请求消息#1中携带网络地址#1;同理,当网络管理单元需要访问总线设备#2时,网络管理单元向总线设备#2发送请求消息#2,并在该请求消息#2中携带网络地址#2;当网络管理单元需要访问总线设备#3时,网络管理单元向总线设备#3发送请求消息#3,并在该请求消息#3中携带网络地址#3。
[0145] 第一指示信息用于指示对第一配置空间寄存器的操作类型。例如,当网络管理单元通过请求消息对总线设备的第一配置空间寄存器进行读操作时,第一指示信息用于指示读(read);当网络管理单元通过请求消息对总线设备的第一配置空间寄存器进行写操作时,第一指示信息用于指示写(write),其中,写操作包括但不限于增加或修改。
[0146] 示例性地,当第一指示信息指示对第一配置空间寄存器的操作类型为写操作时,请求消息中还可以包括待写入第一配置空间寄存器的数据。
[0147] 例如,网络管理单元通过请求消息请求将数据#1写入总线设备的第一配置空间寄存器,则请求消息中携带该数据#1。
[0148] 示例性地,当第一指示信息指示对第一配置空间寄存器的操作类型为写操作时,请求消息中还可以包括第二指示信息,该第二指示信息用于指示将数据写入第一配置空间寄存器中的至少一个字节。
[0149] 例如,第一配置空间寄存器的大小为4个字节,网络管理单元可以通过请求消息请求将数据#1写入总线设备的第一配置空间寄存器中的两个字节,该请求消息中携带数据#1和第二指示信息,该第二指示信息指示将数据#1写入第一配置空间寄存器中的任意两个字节。
[0150] 第一配置空间寄存器的信息用于指示第一配置空间寄存器,为第一配置空间寄存器相关的信息。
[0151] 示例性地,第一配置空间寄存器的信息包括以下至少一项:
[0152] 第一配置空间寄存器的类型信息、第一配置空间寄存器的索引、或第一配置空间寄存器的地址。
[0153] 第一配置空间寄存器的类型信息用于标识待访问的总线设备的第一配置空间寄存器的类型,由前文图6中所示,本申请中总线设备本地配置的配置空间寄存器可能包括不同的类型,而不同类型的配置空间寄存器对应不同类型的地址块。从而可以通过在请求消息中携带配置空间寄存器的类型信息,准确指示待访问的配置空间寄存器所对应的地址。例如,第一配置空间寄存器的类型信息指示待访问的总线设备的第一配置空间寄存器的类型为基础寄存器,则访问消息所访问的地址块为图6中所示的基础块(basic block)对应的片段0(segement0)。
[0154] 另外,第一配置空间寄存器的地址用于指示待访问的总线设备的第一配置空间寄存器的地址。应理解,某个配置空间寄存器可能包括多个地址片段,如前文图7中(a)中所示,某个配置空间寄存器对应的地址块包括多个片段,不同片段的地址不同,可以通过第一配置空间寄存器的地址信息详细指示所访问的总线设备的第一配置空间寄存器的地址。
[0155] 应理解,该实施例中对于第一配置空间寄存器的信息的具体形式不做任何限定,能够用于指示第一配置空间寄存器的信息均在本申请的保护范围之内。
[0156] 进一步地,请求消息中还包括任务标识(identify,ID),该任务标识用于标识该请求消息,不同的请求消息可以携带不同的任务标识。例如,请求消息#1中携带的任务标识可以为标识#1;请求消息#2中携带的任务标识可以为标识#2。其中,任务标识还可以是标签(tag)。
[0157] 示例性地,该实施例中网络管理单元可以通过请求消息访问总线设备的多个配置空间寄存器。以提高访问效率。为了便于描述,下面以请求消息还用于请求访问所述总线设备的第二配置空间寄存器为例进行说明。
[0158] 具体地,当请求消息还用于请求访问所述总线设备的第二配置空间寄存器时,请求消息中还包括第三指示信息和第二配置空间寄存器的信息,第三指示信息用于指示对第二配置空间寄存器的操作类型。
[0159] 其中,第三指示信息用于指示对第二配置空间寄存器的操作类型。例如,当网络管理单元通过请求消息对总线设备的第二配置空间寄存器进行读操作时,第三指示信息用于指示读(read);当网络管理单元通过请求消息对总线设备的第二配置空间寄存器进行写操作时,第三指示信息用于指示写(write)。
[0160] 示例性地,当第三指示信息指示对第二配置空间寄存器的操作类型为写操作时,请求消息中还可以包括待写入第二配置空间寄存器的数据。
[0161] 例如,网络管理单元通过请求消息请求将数据#2写入总线设备的第二配置空间寄存器,则请求消息中携带该数据#2。
[0162] 示例性地,当第三指示信息指示对第二配置空间寄存器的操作类型为写操作时,请求消息中还可以包括第四指示信息,该第四指示信息用于指示将数据写入第二配置空间寄存器中的至少一个字节。
[0163] 例如,第二配置空间寄存器的大小为4个字节,网络管理单元可以通过请求消息请求将数据#2写入总线设备的第二配置空间寄存器中的两个字节,该请求消息中携带数据#2和第四指示信息,该第四指示信息指示将数据#2写入第二配置空间寄存器中的任意两个字节。
[0164] 可选地,当网络管理单元通过请求消息对总线设备中的不同配置空间寄存器执行同样的操作时,上述的第一指示信息和第三指示信息可以为同一个信息,第二指示信息和第四指示信息也可以为同一个信息。
[0165] 示例性地,第二配置空间寄存器的信息包括以下至少一项:
[0166] 第二配置空间寄存器的类型信息、第二配置空间寄存器的索引、或第二配置空间寄存器的地址。第二配置空间寄存器的信息相关描述可以参考上述关于第一配置空间寄存器的信息的描述,这里不再赘述。
[0167] 可选地,当网络管理单元通过请求消息请求访问总线设备的多个配置空间寄存器时,请求消息中携带的用于访问多个配置空间寄存器的信息分别组成多个访问请求,例如,请求消息请求访问第一配置空间寄存器和第二配置空间寄存器时,请求消息中携带的支持访问第一配置空间寄存器的信息(如,上述的第一指示信息、第一配置空间寄存器的信息和第二指示信息等)称为访问请求#1,请求消息中携带的支持访问第一配置空间寄存器的信息(如,上述的第三指示信息、第二配置空间寄存器的信息和第四指示信息等)称为访问请求#2。
[0168] 应理解,上述网络管理单元通过请求消息请求访问总线设备的第一配置空间寄存器和第二配置空间寄存器,只是举例说明网络管理单元可以通过一条请求消息访问多个配置空间寄存器,对本申请的保护范围不构成任何的限定,该实施例中网络管理单元可以通过请求消息请求访问总线设备的其他配置空间寄存器,例如,请求消息中还包括支持访问第三配置空间寄存器的访问请求#3,这里不再赘述。
[0169] 示例性地,该实施例中网络管理单元中包括处理核和控制器,上述的网络管理单元向总线设备发送请求消息包括:网络管理单元中的控制器向总线设备发送请求消息。需要说明的是,该实施例中网络管理单元所执行的操作可以由系统软件实现,则下述的处理核和控制器所执行的操作可以由系统软件实现。
[0170] 该实施例中控制器向总线设备发送访问请求消息之前,网络管理单元内部消息传输包括以下步骤:
[0171] 步骤一:处理核将请求消息的描述符发送至DDR。
[0172] 具体地,处理核将待访问的总线设备的配置空间寄存器相关信息作为请求消息的描述符,并且该请求消息的描述符由DDR中的发送队列条目(Send Queue Entry,SQE)承载。
[0173] 步骤二:处理核向控制器发送指示信息#1。该指示信息#1用于通知控制器有任务待执行。具体地,该指示信息#1用于指示控制器从DDR中获取请求消息的描述符。
[0174] 例如,控制器中存在一个入口引擎(engine),系统在设计时为该入口引擎预留一段地址空间(如,预留获取保存门铃(doorbell)、SQE、接收队列条目(receive Queue Entry,SQE)和完成队列条目(Complete Queue Entry,CQE)等信息所需地址空间),处理核发送doorbell通知控制器中的入口引擎有任务待执行。
[0175] 步骤三:控制器从DDR中获取请求消息的描述符。
[0176] 具体地,控制器中的入口引擎从DDR中获取请求消息的描述符。例如,控制器中的入口引擎读取DDR中的SQE,从SQE中获取请求消息的描述符。
[0177] 步骤四:控制器生成请求消息。
[0178] 该实施例中,控制器中的入口引擎获取到请求消息的描述符之后,将请求消息的描述符封装为设备总线上的一条请求消息。其中,请求消息相关描述可以参考上述步骤S810中关于请求消息的描述,这里不再赘述。
[0179] 该实施例中,支持处理核连续下发多个描述符任务,也支持控制器中存在多个软硬件接口队列。控制器和总线设备均支持多个请求消息的发送和接收,以提高性能。
[0180] 进一步地,该实施例中总线设备接收到上述的访问请求消息之后,解析并执行相应的操作请求,返回访问响应消息,图8所示的方法还包括:
[0181] S820,总线设备向网络管理单元发送响应消息,或者说网络管理单元接收来自总线设备的响应消息。
[0182] 具体地,响应消息中携带任务标识。总线设备在响应消息中携带任务标识,以使得网络管理单元可以根据响应消息中携带的任务标识判断该响应消息是否为响应于某条请求消息的消息。
[0183] 例如,网络管理单元向总线设备#1发送的请求消息#1中携带的任务标识为标识#1;网络管理单元向总线设备#2发送的请求消息#2中携带的任务标识为标识#2。总线设备#1接收到请求消息#1之后可以向网络管理单元发送响应于请求消息#1的响应消息#1,该响应消息#1中携带标识#1,标识#1用于指示响应消息#1为响应于请求消息#1的消息;
[0184] 同理,总线设备#2接收到请求消息#2之后可以向网络管理单元发送响应于请求消息#2的响应消息#2,该响应消息#2中携带标识#2,标识#2用于指示响应消息#2为响应于请求消息#2的消息。从而网络管理单元可以根据响应消息#1中携带的标识#1,确定响应消息#1为响应于请求消息#1的消息,以及根据响应消息#2中携带的标识#2,确定响应消息#2为响应于请求消息#2的消息。
[0185] 作为一种可能的实现方式,响应消息用于指示针对配置空间寄存器的操作是否成功。
[0186] 例如,请求消息请求对第一配置空间寄存器进行写操作,若总线设备将请求消息中携带的待写入第一配置空间寄存器的数据#1成功写入第一配置空间寄存器,则响应消息用于指示针对第一配置空间寄存器的写操作成功。
[0187] 还例如,请求消息请求对第一配置空间寄存器和第二配置空间寄存器进行写操作,若总线设备将请求消息中携带的待写入第一配置空间寄存器的数据#1成功写入第一配置空间寄存器,以及将请求消息中携带的待写入第二配置空间寄存器的数据#2成功写入第二配置空间寄存器,则响应消息用于指示针对第一配置空间寄存器和第二配置空间寄存器的写操作成功。
[0188] 又例如,请求消息请求对第一配置空间寄存器和第二配置空间寄存器进行写操作,若总线设备将请求消息中携带的待写入第一配置空间寄存器的数据#1成功写入第一配置空间寄存器,以及将请求消息中携带的待写入第二配置空间寄存器的数据#2写入第二配置空间寄存器失败,则响应消息用于指示针对第一配置空间寄存器写操作成功,且针对第二配置空间寄存器的写操作失败(如,响应消息包括两个响应字段,分别指示针对两个配置空间寄存器的操作是否成功)。
[0189] 应理解,上述只是举例说明响应消息如何指示针对配置空间寄存器的操作是否成功,对本申请的保护范围不构成任何的限定,响应消息还可以通过其他方式指示针对不同配置空间寄存器的操作是否成功,这里不再一一举例说明。
[0190] 作为另一种可能的实现方式,若配置空间寄存器的操作类型为读操作,响应消息中包括从配置空间寄存器读出的信息。
[0191] 例如,请求消息请求对第一配置空间寄存器进行读操作,则响应消息中包括从第一配置空间寄存器读出的信息。
[0192] 还例如,请求消息请求对第一配置空间寄存器和第二配置空间寄存器进行读操作,则响应消息中包括从第一配置空间寄存器和第二配置空间寄存器读出的信息。
[0193] 可选地,响应消息中还包括指示响应消息为响应于读操作或写操作的信息。
[0194] 可选地,当总线设备通过响应消息响应于网络管理单元访问总线设备的多个配置空间寄存器时,响应消息中多个访问响应,例如,请求消息请求访问第一配置空间寄存器和第二配置空间寄存器时,响应消息响应于该请求消息时,响应消息中针对第一配置空间寄存器访问的响应称为访问响应#1,响应消息中针对第二配置空间寄存器访问的响应称为访问响应#2。
[0195] 另外,该实施例中对于网络管理单元接收到响应消息之后的具体操作不做限定,例如,网络管理单元接收到响应消息之后,可以将响应消息中携带的信息写至RQE中,该RQE承载于CQE。控制器上报中断给处理核,指示有待处理RQE,进而处理核读取CQE,处理RQE,通过任务标识匹配,确定描述符执行状态。
[0196] 图8所示的通信方法中,在网络管理单元需要访问总线设备的配置空间寄存器时,网络管理单元可以通过在请求消息中携带总线设备的网络地址以及待访问的配置空间寄存器的信息,实现总线设备的配置空间寄存器的访问。无需通过内存读写的方式访问,因此该技术方案提供的通过请求消息实现总线设备的配置空间寄存器访问方式,可以避免内存读写的方式带来的时延要求高以及无法跨主机访问的缺点。
[0197] 例如,通过请求消息访问总线设备的配置空间寄存器时,网络管理单元发出的是访问消息并非内存访问指令,时延要求相对较低。还例如,通过请求消息访问总线设备的配置空间寄存器时,由于是通过总线设备的网络地址路由到总线设备,而不是总线设备的内存地址路由到该总线设备,不受单个主机中内存地址分配的限制,因此通过请求消息访问总线设备的配置空间寄存器时可以跨主机访问。
[0198] 还例如,通过总线设备的网络地址实现总线设备的配置空间寄存器访问,相比于前文基本概念中所介绍的内存访问方式,不需要硬件逻辑实现内存地址到Bus number、Device number和Function number的译码逻辑,降低硬件资源的消耗。并且,内存访问,是一种同步访问,CPU发出访问时一直在等待这个访问完成,因此对该访问的响应返回时间有要求,不能太长,通常在1us以内。而图8所示的消息访问,是一种异步访问,即CPU不需要等待,对延时要求低,支持几us~几十us延时。这也让图8所示的消息更适用于大规模组网。
[0199] 需要说明的是,上述的请求消息和响应消息为事务层的消息,事务层消息的格式可以参考目前协议中的规定(如,前文表1所示),这里不再赘述。该实施例中主要涉及事务层消息的消息头(header)和载荷(payload)设计。
[0200] 下面结合图9至图12详细介绍该实施例中事务层消息的Header和Payload两部分的设计。
[0201] 事务层消息分为Header和Payload两部分,其中Header固定4Byte大小,Payload为N*4Bytes大小,其中N为正整数。如图9所示,事务层消息分为Header和Payload两部分。
[0202] 示例性地,在事务层消息为上述的请求消息时,事务层消息的Header通过消息码(Message Code)和子消息码(Sub‑Message Code)指示该事务层消息为访问配置空间寄存器的消息。其中,Sub‑Message Code为可选地,即事务层消息的Header中可以不携带Sub‑Message Code。
[0203] 任务标识用于匹配请求消息与响应消息。
[0204] 事务层消息的Header中消息载荷长度(Message Payload length)指定了消息载荷(Message Payload的长度)。
[0205] 如图10所示,事务层消息的Header包括Message Code、Sub‑Message Code、Task ID和Message Payload length字段。
[0206] 作为一种可能的实现方式,事务层消息为上述的请求消息,请求消息的Payload中可以包含多个访问请求,分别访问总线设备的不同配置空间寄存器。可选地,请求消息中的多个访问请求中每个访问请求可以占固定4Byte大小。
[0207] 在该实现方式下,每个访问请求结构如图11所示,访问请求中包括Opcode、Byte Enable、Block type、Function Entity Index、Request Address和Write Data字段,其中,每个字段的功能如下所示:
[0208] Opcode:描述了该请求的读写类型;如,指示为读或者写操作,可以理解为上述的第一指示信息或第三指示信息。
[0209] 需要说明的是,若请求消息中的多个访问请求所请求的读写类型相同,可以通过上述消息头中的Sub‑Message Code指示读写类型,即访问请求中Opcode为可选地。例如,请求消息中包括一个访问请求,该访问请求用于请求读,则可以通过Sub‑Message Code指示读写类型为读操作;还例如,请求消息中包括多个访问请求,该多个访问请求均用于请求读,则可以通过Sub‑Message Code指示读写类型为读操作。
[0210] Byte Enable:描述了该请求访问哪几个字节;如,指示访问第一配置空间寄存器中的两个字节,可以理解为上述的第二指示信息或第四指示信息。
[0211] Block type、Function Entity Index和Request Address:描述设备配置空间寄存器;可以理解为上述的第一配置空间寄存器的信息或第二配置空间寄存器的信息[0212] Write Data:描述待写数据。若请求消息为请求将数据#1写入第一配置空间寄存器,针对该第一配置空间寄存器的访问请求中携带该数据#1。
[0213] 作为另一种可能的实现方式,事务层消息为上述的响应消息,响应消息的Payload中可以包含多个访问响应,分别响应于请求消息中多个访问请求。可选地,响应消息中的多个访问响应中每个访问响应可以占固定4Byte大小。
[0214] 在该实现方式下,每个访问响应结构如图12所示,访问响应中包括Opcode、Status和Read Data字段,其中,每个字段的功能如下所示:
[0215] Opcode:描述了该响应对应的请求的读写类型;如,请求消息中访问请求#1为读操作请求,则响应消息中响应该访问请求#1的访问响应#1为读操作的响应。
[0216] Status:描述了该响应对应请求的执行情况;如,指示操作是否成功。
[0217] Read Data:描述了该响应请求的读数据。若请求消息中访问请求#1为读操作请求,则响应消息中响应该访问请求#1的访问响应#1携带读数据。
[0218] 在该实施例中,访问请求消息和访问响应消息一一对应。
[0219] 应理解,本申请实施例中的图8所示的具体的例子只是为了帮助本领域技术人员更好地理解本申请实施例,而非限制本申请实施例的范围。还应理解,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
[0220] 还应理解,在本申请的各个实施例中,如果没有特殊说明以及逻辑冲突,不同的实施例之间的术语和/或描述具有一致性、且可以相互引用,不同的实施例中的技术特征根据其内在的逻辑关系可以组合形成新的实施例。
[0221] 上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
[0222] 以下,结合图13至图15详细说明本申请实施例提供的通信装置。应理解,装置实施例的描述与方法实施例的描述相互对应,因此,未详细描述的内容可以参见上文方法实施例,为了简洁,部分内容不再赘述。
[0223] 本申请实施例可以根据上述方法示例对发送端设备或者接收端设备进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本申请实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。下面以采用对应各个功能划分各个功能模块为例进行说明。
[0224] 图13示出了本申请实施例提供的一种通信装置1300的结构示意图。
[0225] 一种示例,通信装置1300可以为上述的网络管理单元,通信装置1300可以用于执行上述的通信方法,例如用于执行图8所示的方法。通信装置1300可以包括收发单元1310和处理单元1320。
[0226] 收发单元1310,用于向总线设备发送请求消息,所述请求消息用于请求访问所述总线设备的第一配置空间寄存器,所述请求消息中包括所述总线设备的网络地址、第一指示信息和所述第一配置空间寄存器的信息,所述网络地址为网络管理单元为所述总线设备分配的地址,所述第一指示信息用于指示对所述第一配置空间寄存器的操作类型。收发单元1310,用于接收来自所述总线设备的响应于所述请求消息的响应消息。
[0227] 作为示例,结合图8,收发单元1310可以用于执行S810和S820。
[0228] 另一种示例,通信装置1300可以为上述的总线设备,通信装置1300可以用于执行上述的通信方法,例如用于执行图8所示的方法。
[0229] 收发单元1310,用于接收来自网络管理单元的请求消息,所述请求消息用于请求访问总线设备的第一配置空间寄存器,所述请求消息中包括所述总线设备的网络地址、第一指示信息和所述第一配置空间寄存器的信息,所述网络地址为网络管理单元为所述总线设备分配的地址,所述第一指示信息用于指示对所述第一配置空间寄存器的操作类型。收发单元1310,用于向所述网络管理单元发送响应于所述请求消息的响应消息。
[0230] 作为示例,结合图8,收发单元1310可以用于执行S810和S820。
[0231] 本申请实施例还提供一种芯片系统1400,如图14所示,该芯片系统1400包括至少一个处理器和至少一个接口电路。作为示例,当该芯片系统1400包括一个处理器和一个接口电路时,则该一个处理器可以是图14中实线框所示的处理器1410(或者是虚线框所示的处理器1410),该一个接口电路可以是图14中实线框所示的接口电路1420(或者是虚线框所示的接口电路1420)。
[0232] 当该芯片系统1400包括两个处理器和两个接口电路时,则该两个处理器包括图14中实线框所示的处理器1410和虚线框所示的处理器1410,该两个接口电路包括图14中实线框所示的接口电路1420和虚线框所示的接口电路1420。对此不作限定。处理器1410和接口电路1420可通过线路互联。例如,接口电路1420可用于接收信号(例如存储器中存储的指令等)。又例如,接口电路1420可用于向其它装置(例如处理器1410)发送信号。
[0233] 示例性的,接口电路1420可读取存储器中存储的指令,并将该指令发送给处理器1410。当该指令被处理器1410执行时,可使得通信装置或访问内存的装置执行上述实施例中的各个步骤。当然,该芯片系统1400还可以包含其他分立器件,本申请实施例对此不作具体限定。
[0234] 本申请另一实施例还提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当指令在通信装置上运行时,该通信装置执行上述方法实施例所示的方法流程中该通信装置执行的各个步骤。在一些实施例中,所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。
[0235] 图15示意性地示出本申请实施例提供的计算机程序产品的概念性局部视图,该计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。
[0236] 在一个实施例中,计算机程序产品是使用信号承载介质1000来提供的。该信号承载介质1500可以包括一个或多个程序指令,其当被一个或多个处理器运行时可以提供以上针对图8描述的功能或者部分功能。因此,例如,参考图8中一个或多个特征可以由与信号承载介质1500相关联的一个或多个指令来承担。此外,图15中的程序指令也描述示例指令。
[0237] 在一些示例中,信号承载介质1500可以包含计算机可读介质1501,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体read only memory,ROM)或随机存储记忆体(random access memory,RAM)等等。
[0238] 在一些实施方式中,信号承载介质1500可以包含计算机可记录介质1502,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。
[0239] 在一些实施方式中,信号承载介质1500可以包含通信介质1503,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。信号承载介质1500可以由无线形式的通信介质1503(例如,遵守IEEE 1502.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令可以是,例如,计算机可执行指令或者逻辑实施指令。
[0240] 在一些示例中,诸如针对图8所示的通信装置可以被配置为:响应于通过计算机可读介质1501、计算机可记录介质1502、和/或通信介质1503中的一个或多个程序指令,提供各种操作、功能、或者动作。
[0241] 应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
[0242] 在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上和执行计算机执行指令时,全部或部分地产生按照本申请实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。
[0243] 计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid statedisk,SSD))等。
[0244] 以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页 第1页 第2页 第3页