CN116226021A - 数据收发方法、装置以及图形处理器 - Google Patents
数据收发方法、装置以及图形处理器 Download PDFInfo
- Publication number
- CN116226021A CN116226021A CN202310505082.4A CN202310505082A CN116226021A CN 116226021 A CN116226021 A CN 116226021A CN 202310505082 A CN202310505082 A CN 202310505082A CN 116226021 A CN116226021 A CN 116226021A
- Authority
- CN
- China
- Prior art keywords
- interrupt
- data
- register
- type
- hardware
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000005540 biological transmission Effects 0.000 claims abstract description 71
- 238000012546 transfer Methods 0.000 claims description 52
- 238000004590 computer program Methods 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 11
- 238000004891 communication Methods 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 230000006870 function Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000002457 bidirectional effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000000873 masking effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bus Control (AREA)
- Communication Control (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Systems (AREA)
Abstract
本申请涉及数据通信技术领域,提供一种数据收发方法、装置以及图形处理器。所述方法应用于从设备数据收发接口,所述从设备数据收发接口包括软件模拟的虚拟寄存器以及硬件寄存器。该数据收发方法包括:确定与数据收发相关的中断的类型;确定与所述中断的类型对应的操作指令,所述操作指令包括:从该硬件寄存器读数据至该虚拟寄存器或从该虚拟寄存器读数据至该硬件寄存器;和/或,使能或失能中断。由此,可以节约硬件实现成本,提高传输效率。
Description
技术领域
本申请涉及数据通信技术领域,尤其涉及一种数据收发方法、装置以及图形处理器。
背景技术
IIC(Inter-Integrated Circuit,即集成电路总线),也叫I2C是一种串行通信总线,使用多主从架构,IIC总线在各种总线中使用信号线最少,仅使用两条线就可以完成多机通信,并且具有自动寻址、多主机时钟同步和仲裁等功能的总线,因此,在各类实际应用中得到广泛应用。IIC总线在服务器系统内的使用范围较高,涉及板内、板间的互联,主要用于处理带外的管理以及信息的获取等。
另外,在现有技术中,通常用硬件实现数据收发双向先进先出(FIFO)寄存器,主设备向从设备发送数据时,数据写到从设备的接收FIFO寄存器,主设备从从设备中读取数据时,数据从从设备的发送FIFO寄存器发出。每次能够最大收发的数据量是对应FIFO寄存器的最大数量。例如,收发分别为8字节FIFO寄存器,每次只能接收或者发送最大8字节数据。
应该注意,上面对技术背景的介绍只是为了方便对本申请的技术方案进行清楚、完整的说明,并方便本领域技术人员的理解而阐述的。不能仅仅因为这些方案在本申请的背景技术部分进行了阐述而认为上述技术方案为本领域技术人员所公知。
发明内容
发明人发现,在完全通过硬件实现寄存器时,由于寄存器数量是固定的,因此,不够灵活,如果需要传输较大的数据,则需要多次传输,导致传输效率降低,另外,硬件实现也较为复杂,成本较高。
为了解决至少上述技术问题或类似的技术问题,本申请实施例提供一种数据收发方法、装置以及图形处理器。
本申请实施例提供一种数据收发方法,应用于从设备数据收发接口,所述从设备数据收发接口包括软件模拟的虚拟寄存器以及硬件寄存器,所述方法包括:
确定与数据收发相关的中断的类型;
执行与所述中断的类型对应的操作指令,所述操作指令包括:从该硬件寄存器读数据至该虚拟寄存器或从该虚拟寄存器读数据至该硬件寄存器;和/或,使能或失能中断。
本申请实施例还提供一种数据收发装置,应用于从设备数据收发接口,所述从设备数据收发接口包括软件模拟的虚拟寄存器以及硬件寄存器,所述数据收发装置包括:
确定单元,其确定与数据收发相关的中断的类型;
执行单元,其执行与所述中断的类型对应的操作指令,所述操作指令包括:从该硬件寄存器读数据至该虚拟寄存器或从该虚拟寄存器读数据至该硬件寄存器;和/或,使能或失能中断。
本申请实施例还提供一种数据收发接口装置,包括:软件模拟的虚拟寄存器以及硬件寄存器;被配置为基于与数据收发相关的中断的类型;执行与所述中断的类型对应的操作指令,所述操作指令包括:从所述硬件寄存器读数据至所述虚拟寄存器或从所述虚拟寄存器读数据至所述硬件寄存器;和/或,使能或失能中断。
本申请实施例还提供一种图形处理器,包括前一方面的数据收发接口。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现前述数据收发方法。
本申请实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现前述数据收发方法。
本申请实施例的有益效果在于:通过软件模拟虚拟寄存器,以实现收发数据共享同一组硬件寄存器,因此,不需要在从设备中分别设置发送寄存器和接收寄存器,节约硬件实现成本。通过响应数据收发过程中定义的不同的中断的类型,来进行设备间的数据收发处理,可以避免共享寄存器时发生数据踩踏。另外,通过虚拟寄存器结合硬件寄存器进行数据收发,可以减少传输次数,提高传输效率,配置方式更加灵活,容错成本低。
参照后文的说明和附图,详细公开了本申请的特定实施方式,指明了本申请的原理可以被采用的方式。应该理解,本申请的实施方式在范围上并不因而受到限制。在所附权利要求的条款的范围内,本申请的实施方式包括许多改变、修改和等同。
针对一种实施方式描述和/或示出的特征可以以相同或类似的方式在一个或更多个其它实施方式中使用,与其它实施方式中的特征相组合,或替代其它实施方式中的特征。
应该强调,术语“包括/包含”在本文使用时指特征、整件、步骤或组件的存在,但并不排除一个或更多个其它特征、整件、步骤或组件的存在或附加。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1是本申请实施例的写数据时序图;
图2是本申请实施例的读数据时序图;
图3是本申请实施例的数据收发方法示意图;
图4是本申请实施例的数据收发方法示意图;
图5是本申请实施例的数据收发方法流程图;
图6是本申请实施例的数据收发装置示意图;
图7是本申请实施例的数据收发接口装置示意图。
具体实施方式
参照附图,通过下面的说明书,本申请的前述以及其它特征将变得明显。在说明书和附图中,具体公开了本申请的特定实施方式,其表明了其中可以采用本申请的原则的部分实施方式,应了解的是,本申请不限于所描述的实施方式,相反,本申请包括落入所附权利要求的范围内的全部修改、变型以及等同物。下面结合附图对本申请的各种实施方式进行说明。这些实施方式只是示例性的,不是对本申请的限制。
在本申请实施例中,术语“第一”、“第二”、“上”、“下”等用于对不同元素从称谓上进行区分,但并不表示这些元素的空间排列或时间顺序等,这些元素不应被这些术语所限制。术语“和/或”包括相关联列出的术语的一种或多个中的任何一个和所有组合。术语“包含”、“包括”、“具有”等是指所陈述的特征、元素、元件或组件的存在,但并不排除存在或添加一个或多个其他特征、元素、元件或组件。
在本申请实施例中,单数形式“一”、“该”等包括复数形式,应广义地理解为“一种”或“一类”而并不是限定为“一个”的含义;此外术语“所述”应理解为既包括单数形式也包括复数形式,除非上下文另外明确指出。此外术语“根据”应理解为“至少部分根据……”,术语“基于”应理解为“至少部分基于……”,除非上下文另外明确指出。
以下对本申请涉及到的术语进行说明。
FIFO:first in first out,先进先出。通常分为软件FIFO寄存器和硬件FIFO寄存器。硬件FIFO寄存器是硬件(触发器等)做好的固有区域,可以理解为只是用来做FIFO功能的芯片。软件FIFO是在内存中开辟的区域,可以像操作寄存器一样操作它,规则为先进先出。
I2C是一个多主从的串行总线,I2C协议中主设备(以下称为I2C master)和从设备(以下称为I2C slave)之间可以收发数据,从主设备侧看,主设备向从设备发送数据,也称为主设备向从设备寄存器中“写数据”,主设备接收从设备发送的数据,也称为主设备从从设备寄存器中“读数据”。
图1是本申请实施例的主设备向从设备发送数据的流程(写数据时序)图;如图1所示,该流程包括:主设备先发送起始信号S,占用总线,发送器件地址(slave 地址,表示寻找挂接在主设备下的从设备),发送写标记WR,等待(接收)从设备应答A,发送寄存器地址(表示想要写入的从设备内部的寄存器地址),等待(接收)从设备应答A,发送N字节数据(一个字节一个字节的发送,每个字节后有一个应答)。所有数据发完后,最后发送停止信号P,释放总线。
图2是本申请实施例的主设备接收从设备发送的数据的流程(读数据时序)图;如图2所示,该流程包括:主设备先发送起始信号S,占用总线,发送器件地址(slave 地址,表示寻找挂接在主设备下的从设备),发送写标记WR,等待(接收)从设备应答A,发送寄存器地址(表示想要读取的从设备内部的寄存器地址),等待(接收)从设备应答A,再发送一个起始信号SR,再发送器件地址,发送读标记Rd,等待(接收)从设备应答A,读取N字节数据(一个字节一个字节的读取,每个字节后有一个应答)。所有数据读取完成后,最后发送停止信号P,释放总线。
其中,各个信号、地址、标记等的比特数可以根据需要确定,本申请图1和图2仅为示例,例如,使用1比特表示读写标记,该比特为0表示写,否则表示读,反之亦可,此处不再一一示例。
以下结合本申请实施例进行说明。
第一方面的实施例
本申请第一方面的实施例提供一种数据收发方法,该方法应用于从设备侧数据收发接口,所述从设备数据收发接口包括软件模拟的虚拟寄存器以及硬件寄存器。
图3是本申请实施例的数据收发方法的一个示意图。如图3所示,该方法包括:
301,确定与数据收发相关的中断的类型;
302,执行与所述中断的类型对应的操作指令,所述操作指令包括:从硬件寄存器读数据至该虚拟寄存器或从该虚拟寄存器读数据至硬件寄存器;和/或,使能或失能中断。
在一些实施例中,上述301-302中的方法的执行主体是从设备,该从设备进行数据收发是指:从设备与主设备之间进行数据收发。为了方便说明,以下实施例中,从设备接收主设备发送的数据,也称为主设备向从设备发送数据,或者从设备从主设备读数据,或者主设备向从设备寄存器写入数据;从设备向主设备发送数据,也称为主设备接收从设备发送的数据,或者从设备向主设备写数据,或者主设备从从设备寄存器中读取数据。如无特别说明,以下实施例中的“读”和“写”都是以从设备端视角判断的。
在一些实施例中,以上从设备和主设备通过第一总线连接,第一总线的通信协议可以根据实际需求选择,使得主设备通过第一总线能够对从设备进行读写操作。例如,第一总线可以具体为I2C总线,但本申请实施例并不以此作为限制。
在一些实施例中,上述主设备可以是服务器的基板管理控制器(Base boardManagement Controller,BMC)等电子元件,从设备可以是图像处理器(GPU)等电子元件,BMC可以通过第一总线与GPU进行通信,即进行数据收发。例如,BMC可以获取GPU温度数据,识别码数据等,或者向GPU发送控制命令等,此处不再一一示例。以上主设备和从设备仅为示例,本申请实施例并不以此作为限制。
如前所述,主设备向从设备发送数据,是指主设备向从设备寄存器中写数据,主设备接收从设备发送的数据,是指主设备从从设备寄存器中读数据。在本申请实施例中,从设备收发数据共享同一组硬件寄存器,也就是说,主设备读写操作都是使用同一组寄存器,因此,不需要在从设备中分别设置发送寄存器和接收寄存器,由此,可以降低硬件成本。该寄存器的位宽以及硬件寄存器的数量是固定的,具体可以根据需要确定。另外,该寄存器可以是FIFO寄存器,本申请实施例并不以此作为限制。
在一些实施例中,在硬件寄存器中会产生数据收发过程中所发生的各类中断,中断是指从设备(硬件寄存器)在正常运行时,由于内部/外部事件或由程序预先安排的事件,该事件会中断正在运行的程序,而转到为内部/外部事件或由程序预先安排的事件服务的程序中去,服务完毕,再返回执行被暂时中断的程序。
在一些实施例中,可以在硬件寄存器中预先定义(配置)数据收发的过程中的中断类型,也就是说,预先定义(配置)与数据收发相关的中断的类型,包括:地址命中(hit)中断、字节接收中断、硬件寄存器半中断、传输完成中断中的至少两种。
在一些实施例中,在主设备发起对从设备的访问时,即读写数据过程中,例如图1和图2中器件地址与从设备预先配置的地址匹配时,在硬件寄存器中产生该地址命中中断。
在一些实施例中,在从设备硬件寄存器接收到主设备发送的一个字节数据后,在硬件寄存器中产生该字节接收中断,例如图1和图2都存在主设备向从设备寄存器写(发)数据的时序,在硬件寄存器中写入一个字节的数据后,产生该字节接收中断,也就是说,在字节接收中断发生时,硬件寄存器中只可能有一个字节的数据。通过设置该字节接收中断,可以在读传输时处理器有充足的时间从硬件寄存器取走主设备写入的字节数据(虚拟寄存器地址)。
在一些实施例中,硬件寄存器半中断包括半满中断和半空中断,例如,从设备从主设备中读数据时(或者说,主设备将数据写入从设备寄存器),硬件寄存器中写了一半的数据(例如,FIFO_SIZE_HALF个字节数据)时,产生硬件寄存器半满中断,例如针对8字节的硬件寄存器,在写了4字节的数据时,产生硬件寄存器半满中断。主设备从从设备寄存器中读数据时(或者说,从设备将数据写入主设备时),硬件寄存器中读了一半的数据时,产生硬件寄存器半空中断,例如针对8字节的硬件寄存器,在读了4字节的数据时,产生硬件寄存器半空中断。
在一些实施例中,读写数据过程中,例如图1和图2中主设备向从设备发送停止信号P,表示数据读写完成,从设备接收到信号P时,在硬件寄存器中产生该传输完成中断。
以上中断类型仅为示例说明,还可以在硬件寄存器中预先定义其他类型的与数据收发相关的中断,本申请实施例并不以此作为限制。
在一些实施例中,上述各种在硬件寄存器中预先定义(配置)的中断的状态包括使能和禁用(失能/屏蔽),可以通过向量中断控制器使能中断或失能中断,具体可以参考相关技术,例如可以预先使能地址命中中断和传输完成中断,并失能硬件寄存器半中断和字节接收中断,该硬件寄存器半中断和字节接收中断可以在地址命中中断发生后进行使能,具体将在后述进行说明。
在一些实施例中,由于从设备读数据和写数据共享同一组硬件寄存器,为了避免数据踩踏,可以由从设备的处理器中的程序响应硬件寄存器中发生的中断,进行数据收发处理。
在一些实施例中,可以在从设备的内存中划分一部分区域配置一组虚拟寄存器,该虚拟寄存器可以用于数据收发,该虚拟寄存器的数量可以根据业务灵活地弹性配置,例如配置为4k字节,或8k字节等,本申请实施例并不以此作为限制。以下将该虚拟寄存器的索引值用reg_index表示,该虚拟寄存器可以是软件FIFO寄存器。通过虚拟寄存器结合硬件寄存器进行数据收发,可以减少传输次数,提高传输效率,配置方式更加灵活,容错成本低。
在一些实施例中,在301中,可以按照预定的中断类型顺序判断硬件寄存器中共产生的中断的类型,该预定的中断类型顺序可以是中断在数据收发过程中产生的顺序,例如该预定的中断类型顺序可以是地址命中(hit)中断、字节接收中断、硬件寄存器半中断、传输完成中断。
例如,进入中断处理后,先确定与数据收发相关的中断的类型是否为地址命中中断,在判断结果为是时,确定所述中断的类型为地址命中中断;在判断结果为否时,确定所述中断的类型是否为字节接收中断,在判断结果为是时,确定所述中断的类型为字节接收中断,在判断结果为否时,确定所述中断的类型是否为硬件寄存器半中断,在判断结果为是时,确定所述中断的类型为硬件寄存器半中断,在判断结果为否时,确定所述中断的类型是否为传输完成中断。
例如,主设备和从设备可以按照前述图1或图2的时序进行数据收发,在进入中断处理后,判断硬件寄存器收到主设备通过总线发来的器件地址是否与从设备的地址匹配,在判断结果为是时,确定发生地址命中中断,否则,判断在硬件寄存器中是否写入一个字节的数据,在判断结果为是时,确定发生字节接收中断,否则,判断硬件寄存器中是否写/读了一半的数据,在判断结果为是时,确定发生硬件寄存器半中断,否则,判断硬件寄存器是否接收到主设备通过总线发来的结束P信号,在判断结果为是时,确定发生传输完成中断,否则退出中断处理。
在一些实施例中,在302中,在确定发生地址命中中断时,可以从虚拟寄存器读数据至硬件寄存器,并使能数据收发过程中后续的中断,或者仅使能数据收发过程中后续的中断。数据收发过程中后续的中断包括字节接收中断和/或硬件寄存器半中断。在确定发生字节接收中断时,可以从硬件寄存器读数据,还可以禁用(失能)该字节接收中断。在确定发生硬件寄存器半中断时,从硬件寄存器读数据至虚拟寄存器或从虚拟寄存器读数据至硬件寄存器。在确定发生传输完成中断时,禁用(失能)硬件寄存器半中断,还可以从硬件寄存器读数据至虚拟寄存器。
在一些实施例中,同一中断类型对应的操作指令还进一步与数据传输方向或数据传输量相关,图4是本申请实施例的数据收发方法的一个示意图。如图4所示,该方法包括:
401,确定与数据收发相关的中断的类型;
402,确定数据传输方向和/或数据传输量;
403,根据确定的中断的类型和数据传输方向,或根据确定的中断的类型和数据传输量执行操作指令。
所述操作指令包括:从硬件寄存器读数据至虚拟寄存器或从虚拟寄存器读数据至硬件寄存器;和/或,使能或失能中断;另外,还可以包括发送应答,和/或清空硬件寄存器。
在一些实施例中,401的实施方式可以参考301,此处不再重复。
在一些实施例中,在402中,数据传输方向包括写传输和读传输,可以通过查询硬件寄存器的读写标识位来确定数据传输方向,例如该读写标识位使用1比特表示,在该1比特的值为0时,表示传输方向为写传输,在该1比特的值为1时,表示传输方向为读传输,如前所述,本申请中的“读”和“写”是以从设备端视角判断的。
在一些实施例中,在402中,可以通过计数器实时统计当前传输(接收)的数据量,例如,可以以字节为单位统计传输的数据量,但本申请实施例并不以此作为限制。
在一些实施例中,根据确定的中断的类型和数据传输方向确定操作指令,例如,在中断的类型为地址命中(hit)中断、硬件寄存器半中断、传输完成中断时,在数据传输方向是读传输和写传输时对应的操作指令是不同的或者说不完全相同的。
在一些实施例中,根据确定的中断的类型和数据传输量确定操作指令,例如,在中断的类型为字节接收中断时,表示从设备接收主设备发送的数据,传输方向是固定的,所以不需要判断数据传输方向,但数据传输量不同时对应的操作指令是不同的或者说不完全相同的。
以下详细说明。
在一些实施例中,在所述中断的类型为地址命中中断且数据传输方向为读传输时,所述操作指令包括:使能字节接收中断和/或硬件寄存器半中断;在所述中断的类型为地址命中中断且数据传输方向为写传输时,所述操作指令包括使能硬件寄存器半中断,并将从虚拟寄存器读数据并写入所述硬件寄存器。其中,读数据的数据量为硬件寄存器大小的一半的数据量。例如,在传输方向为写传输时,依次从虚拟寄存器的reg_index++对应位置取FIFO_SIZE_HALF个数据至硬件寄存器,并使能硬件寄存器半空中断,在传输方向为读传输时,使能字节接收中断与硬件寄存器半满中断。
在一些实施例中,在所述中断的类型为字节接收中断且已传输的所述数据传输量与预定值的和不等于预定值时,所述操作指令包括从所述硬件寄存器读数据并写入至虚拟寄存器,发送应答以及失能字节接收中断。在所述中断的类型为字节接收中断且已传输的所述数据传输量与预定值的和等于预定值时,所述操作指令包括从所述硬件寄存器读数据,发送应答,其中从硬件寄存器读取的该数据作为后续操作虚拟寄存器的索引值。其中,该预定值为1(字节)。例如,在判断已传输的数据量+1的和为1时,从所述硬件寄存器读数据,即硬件寄存器接收的数据为当前传输的第一个数据(例如图1和图2中的registernumber)时,读取该数据,将该第一个数据作为后续操作虚拟寄存器的索引值reg_index,并且应答ACK;在判断已传输的数据量+1的和不为1时,即硬件寄存器接收的数据不是当前传输的第一个数据,则从所述硬件寄存器读该1个字节数据并写入至虚拟寄存器reg_index++的对应位置,并且禁用(失能)字节接收中断,应答ACK;
在一些实施例中,在字节接收中断使能时,应答ACK是软件(后述处理器实现)应答ACK,而非硬件寄存器自动响应ACK。在字节接收中断禁用(使能)时(例如主设备向从设备发送了寄存器地址后),为了减轻处理器的处理负担,有效利用总线带宽,可以硬件响应ACK。
在一些实施例中,在所述中断的类型为硬件寄存器半中断且数据传输方向为读传输时,所述操作指令包括从虚拟寄存器读数据并写入所述硬件寄存器;在所述中断的类型为硬件寄存器半中断且数据传输方向为写传输时,所述操作指令包括从所述硬件寄存器读数据并写入至虚拟寄存器和统计当前传输的数据量。其中每次读数据的数据量为FIFO_SIZE_HALF 个字节数据。例如,在传输方向为写传输时,依次从硬件寄存器读取FIFO_SIZE_HALF 个字节数据至虚拟寄存器reg_index++的对应位置,在传输方向为读传输时,依次从虚拟寄存器reg_index++的对应位置读取FIFO_SIZE_HALF 个字节数据至硬件寄存器。
在一些实施例中,在所述中断的类型为传输完成中断且数据传输方向为读传输时,所述操作指令包括清空所述硬件寄存器,以及失能所述硬件寄存器半中断;在所述中断的类型为传输完成中断且数据传输方向为写传输时,所述操作指令包括从所述硬件寄存器读数据并写入至虚拟寄存器,以及失能所述硬件寄存器半中断。例如,传输方向为读传输时,清空硬件寄存器并禁用(失能)硬件寄存器半空中断;传输方向为写传输时,依次从硬件寄存器读取数据至虚拟寄存器reg_index++的对应位置,直至硬件寄存器状态为空,禁用(失能)硬件寄存器半满中断,清零当前统计的传输数据量;可选的,在清零前,判断接收数据量是否为该预定值,在不等于预定值时,需要通知应用层处理当前的有效接收数据,等于预定值时,可以执行清零操作。其中,该预定值可以是寄存器地址所占的字节数(例如1),在接收数据量为1时,对应图2中的读时序,在接收数据量不为1时,对应图1中的写时序,在确定结果为写时序时,需要在清零前通知应用层处理当前的有效接收数据。
图5是本申请实施例的数据收发方法流程图,如图5所示,在硬件寄存器产生中断时,该方法包括:
501,判断中断类型是否为地址命中中断,在判断结果为是时,执行502,否则执行505;
502,判断传输方向,在传输方向为读传输时,执行503,在传输方向为写传输时,执行504;
503,使能字节接收中断以及硬件寄存器半满中断;
504,依次从虚拟寄存器reg_index++的对应位置读取FIFO_SIZE_HALF个数据至硬件寄存器,并使能硬件寄存器半空中断;
505;判断中断类型是否为字节接收中断,在判断结果为是时,执行506,否则执行509;
506,判断接收数据是否为当前传输的首个数据,在判断结果为是时,执行507,否则执行508;
507,从硬件寄存器读1个字节数据并标记为reg_index,处理器应答ACK;
508,从硬件寄存器读1个字节数据记录至虚拟寄存器reg_index++的对应位置,禁用字节接收中断,处理器应答ACK;
509,判断中断类型是否为硬件寄存器半中断;在判断结果为是时,执行510,否则执行513;
510,判断传输方向,在传输方向为写传输时,执行511,在传输方向为读传输时,执行512;
511,依次从硬件寄存器读取FIFO_SIZE_HALF 个字节数据至虚拟寄存器reg_index++的对应位置;
512,依次从虚拟寄存器reg_index++的对应位置读取FIFO_SIZE_HALF 个字节数据至硬件寄存器;
513,判断中断类型是否为传输完成中断,在判断结果为是时,执行514,否则结束处理;
514,判断传输方向,在传输方向为写传输时,执行515,在传输方向为读传输时,执行516;
515,依次从硬件寄存器读取数据至虚拟寄存器reg_index++的对应位置,直至硬件寄存器状态为空,禁用硬件寄存器半满中断;
516,清空硬件寄存器并禁用硬件寄存器半空中断。
关于501-516的实施方式如前所述,此处不再赘述。
值得注意的是,以上附图3至图5仅对本申请实施例进行了示意性说明,但本申请不限于此。例如可以适当地调整各个操作之间的执行顺序,此外还可以增加其他的一些操作或者减少其中的某些操作。本领域的技术人员可以根据上述内容进行适当地变型,而不仅限于上述附图1至图5的记载。
以下,结合附图1中的写数据时序和本申请中的数据收发方法,对主设备向从设备寄存器中写入数据的过程进行示例说明。在写数据时序中,主设备发送了器件地址,从设备判断该器件地址与其地址匹配,则产生地址命中中断,并使能字节接收中断和硬件寄存器半满中断,从设备硬件可自动应答ACK。在从设备硬件寄存器接收到register number后,产生字节接收中断,从硬件寄存器读取register number,并赋值给虚拟寄存器索引值,并由处理器向主设备应答ACK,主设备开始向从设备硬件寄存器写入数据,在硬件寄存器每写入一半数据时,会产生硬件寄存器半中断,依次从硬件寄存器读FIFO_SIZE_HALF 个字节数据至软件寄存器reg_index++的对应位置,直至传输完成中断产生,将硬件寄存器数据全部写入软件寄存器reg_index++的对应位置,直至硬件寄存器状态为空,禁用硬件寄存器半满中断,从设备接收完成。
由上述实施例可知,通过软件模拟虚拟寄存器,以实现收发数据共享同一组硬件寄存器,因此,不需要在从设备中分别设置发送寄存器和接收寄存器,节约硬件实现成本。通过响应数据收发过程中定义的不同的中断的类型,来进行设备间的数据收发处理,可以避免共享寄存器时发生数据踩踏。另外,通过虚拟寄存器结合硬件寄存器进行数据收发,可以减少传输次数,提高传输效率,配置方式更加灵活,容错成本低。
第二方面的实施例
本申请实施例提供一种数据收发装置,将第一方面实施例的部分内容合并于此,此处不再赘述。
图6是本申请实施例的数据收发装置示意图,如图6所示,该数据收发装置应用于从设备侧数据收发接口,所述从设备数据收发接口包括软件模拟的虚拟寄存器以及硬件寄存器,数据收发装置600包括:
确定单元601,其确定与数据收发相关的中断的类型;
执行单元602,其执行与所述中断的类型对应的操作指令,所述操作指令包括:从硬件寄存器读数据至该虚拟寄存器或从该虚拟寄存器读数据至硬件寄存器;和/或,使能或失能中断。
关于确定单元601和执行单元602的实施方式可以参考301-302,重复之处不再赘述。
在一些实施例中,该确定单元601还可以确定数据传输方向和/或数据传输量;并且,执行单元602根据确定的中断的类型和数据传输方向,或根据确定的中断的类型和数据传输量执行所述操作指令,具体可以参考402-403,重复之处不再赘述。
本申请实施例还提供一种数据收发接口装置,图7是本申请实施例的数据收发接口装置示意图,如图7所示,该数据收发接口装置700包括:软件模拟的虚拟寄存器701以及硬件寄存器702;数据收发接口装置700被配置为基于与数据收发相关的中断的类型;执行与所述中断的类型对应的操作指令,所述操作指令包括:从所述硬件寄存器702读数据至所述虚拟寄存器701或从所述虚拟寄存器701读数据至所述硬件寄存器702;和/或,使能或失能中断。
在一些实施例中,数据收发接口装置被配置为数据接收和数据发送共享硬件寄存器702,例如,在闪存中配置一块虚拟寄存器701(软件模拟的),硬件寄存器702中会产生第一方面实施例中所述的中断,数据收发接口装置响应于该中断,执行与中断类型对应的操作指令,包括控制硬件寄存器702和/或虚拟寄存器701执行对应的操作指令,具体可以参考第一方面的实施例,此处不再赘述。
本申请实施例提供一种图形处理器,包括前述数据收发接口装置。
值得注意的是,以上仅对与本申请相关的各部件或模块进行了说明,但本申请不限于此。图形处理器或数据收发接口还可以包括其他部件或者模块,关于这些部件或者模块的具体内容,可以参考相关技术。此外,为了简单起见,图6和图7中仅示例性示出了各个部件或模块之间的连接关系或信号走向,但是本领域技术人员应该清楚的是,可以采用总线连接等各种相关技术。
由上述实施例可知,通过软件模拟虚拟寄存器,以实现收发数据共享同一组硬件寄存器,因此,不需要在从设备中分别设置发送寄存器和接收寄存器,节约硬件实现成本。通过响应数据收发过程中定义的不同的中断的类型,来进行设备间的数据收发处理,可以避免共享寄存器时发生数据踩踏。另外,通过虚拟寄存器结合硬件寄存器进行数据收发,可以减少传输次数,提高传输效率,配置方式更加灵活,容错成本低。
第三方面的实施例
第三方面的实施例提供一种电子设备,该电子设备例如可以是计算机、服务器、工作站、膝上型计算机、智能手机,等等;但本申请实施例不限于此。
该电子设备可以包括第二方面实施例中的图形处理器。或者,
该电子设备可以包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现第一方面所述的数据收发方法。
此外,电子设备还可以包括:输入输出(I/O)设备和显示器等;其中,上述部件的功能与现有技术类似,此处不再赘述。
本申请的实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现第一方面的实施例中的方法。
本申请的实施例还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现第一方面的实施例中的方法。
本申请各实施例的技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完图全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述的具体实施例,对本申请的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本申请的具体实施例而已,并不用于限定本申请的保护范围,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (16)
1.一种数据收发方法,其特征在于,所述方法应用于从设备数据收发接口,所述从设备数据收发接口包括软件模拟的虚拟寄存器以及硬件寄存器,所述方法包括:
确定与数据收发相关的中断的类型;
执行与所述中断的类型对应的操作指令,所述操作指令包括:从所述硬件寄存器读数据至所述虚拟寄存器或从所述虚拟寄存器读数据至所述硬件寄存器;和/或,使能或失能中断。
2.根据权利要求1所述的方法,其特征在于,所述与数据收发相关的中断的类型包括:地址命中中断、字节接收中断、硬件寄存器半中断、传输完成中断中的至少两种。
3. 根据权利要求2所述的方法, 其特征在于,确定与数据收发相关的中断的类型包括:按照预定的中断类型顺序判断所述中断的类型。
4.根据权利要求3所述的方法,其特征在于,按照预定的中断类型顺序判断所述中断的类型包括:
确定与数据收发相关的中断的类型是否为地址命中中断,在判断结果为是时,确定所述中断的类型为地址命中中断;
在判断结果为否时,确定所述中断的类型是否为字节接收中断,在判断结果为是时,确定所述中断的类型为字节接收中断,在判断结果为否时,确定所述中断的类型是否为硬件寄存器半中断,在判断结果为是时,确定所述中断的类型为硬件寄存器半中断,在判断结果为否时,确定所述中断的类型是否为传输完成中断。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先使能地址命中中断和传输完成中断。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
确定数据传输方向和/或数据传输量;
并且,根据确定的中断的类型和数据传输方向,或根据确定的中断的类型和数据传输量执行所述操作指令。
7.根据权利要求6所述的方法,其特征在于,所述操作指令还包括发送应答,和/或清空硬件寄存器。
8.根据权利要求6所述的方法,其特征在于,在所述中断的类型为地址命中中断且数据传输方向为读传输时,所述操作指令包括:使能字节接收中断和/或硬件寄存器半中断;
在所述中断的类型为地址命中中断且数据传输方向为写传输时,所述操作指令包括使能硬件寄存器半中断,并将从虚拟寄存器读数据并写入所述硬件寄存器。
9.根据权利要求7所述的方法,其特征在于,在所述中断的类型为字节接收中断且已传输的所述数据传输量与预定值的和不等于预定值时,所述操作指令包括从所述硬件寄存器读数据并写入至虚拟寄存器,发送应答以及失能字节接收中断。
10.根据权利要求7所述的方法,其特征在于,在所述中断的类型为字节接收中断且已传输的所述数据传输量与预定值的和等于预定值时,所述操作指令包括从所述硬件寄存器读数据,发送应答。
11.根据权利要求7所述的方法,其特征在于,在所述中断的类型为硬件寄存器半中断且数据传输方向为读传输时,所述操作指令包括从虚拟寄存器读数据并写入所述硬件寄存器;
在所述中断的类型为硬件寄存器半中断且数据传输方向为写传输时,所述操作指令包括从所述硬件寄存器读数据并写入至虚拟寄存器。
12.根据权利要求7所述的方法,其特征在于,在所述中断的类型为传输完成中断且数据传输方向为读传输时,所述操作指令包括清空所述硬件寄存器,以及失能所述硬件寄存器半中断;
在所述中断的类型为传输完成中断且数据传输方向为写传输时,所述操作指令包括从所述硬件寄存器读数据并写入至虚拟寄存器,以及失能所述硬件寄存器半中断。
13.一种数据收发装置,其特征在于,所述数据收发装置应用于从设备数据收发接口,所述从设备数据收发接口包括软件模拟的虚拟寄存器以及硬件寄存器,所述数据收发装置包括:
确定单元,其确定与数据收发相关的中断的类型;
执行单元,其执行与所述中断的类型对应的操作指令,所述操作指令包括:从硬件寄存器读数据至虚拟寄存器或从虚拟寄存器读数据至硬件寄存器;和/或,使能或失能中断。
14.一种数据收发接口装置,其特征在于,包括:
软件模拟的虚拟寄存器以及硬件寄存器;
被配置为基于与数据收发相关的中断的类型,执行与所述中断的类型对应的操作指令,所述操作指令包括:从所述硬件寄存器读数据至所述虚拟寄存器或从所述虚拟寄存器读数据至所述硬件寄存器;和/或,使能或失能中断。
15.一种图形处理器,其特征在于,包括权利要求14所述的数据收发接口装置。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至12中的任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310505082.4A CN116226021B (zh) | 2023-05-06 | 2023-05-06 | 数据收发方法、装置以及图形处理器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310505082.4A CN116226021B (zh) | 2023-05-06 | 2023-05-06 | 数据收发方法、装置以及图形处理器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116226021A true CN116226021A (zh) | 2023-06-06 |
CN116226021B CN116226021B (zh) | 2023-07-25 |
Family
ID=86584664
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310505082.4A Active CN116226021B (zh) | 2023-05-06 | 2023-05-06 | 数据收发方法、装置以及图形处理器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116226021B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4623962A (en) * | 1982-06-30 | 1986-11-18 | Fujitsu Limited | Register control processing system |
US6128728A (en) * | 1997-08-01 | 2000-10-03 | Micron Technology, Inc. | Virtual shadow registers and virtual register windows |
US20140223090A1 (en) * | 2013-02-01 | 2014-08-07 | Apple Inc | Accessing control registers over a data bus |
CN104253729A (zh) * | 2013-06-28 | 2014-12-31 | 施耐德电器工业公司 | 主从设备间通过寄存器接口传递数据的方法 |
CN105579961A (zh) * | 2013-09-25 | 2016-05-11 | Arm有限公司 | 数据处理系统 |
CN106066834A (zh) * | 2015-04-21 | 2016-11-02 | 黑莓有限公司 | 具有多设备消息传输的总线通信 |
CN109766308A (zh) * | 2019-01-15 | 2019-05-17 | 湖南泽天智航电子技术有限公司 | 一种基于localbus总线的多路onewire通信系统 |
CN109977061A (zh) * | 2017-12-28 | 2019-07-05 | 中兴通讯股份有限公司 | 一种中断处理方法及中断处理装置 |
CN112286852A (zh) * | 2019-07-25 | 2021-01-29 | 杭州海康汽车技术有限公司 | 基于iic总线的数据通信方法和数据通信装置 |
CN115202827A (zh) * | 2022-08-04 | 2022-10-18 | 昆仑芯(北京)科技有限公司 | 处理虚拟化中断的方法、中断控制器、电子设备和芯片 |
-
2023
- 2023-05-06 CN CN202310505082.4A patent/CN116226021B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4623962A (en) * | 1982-06-30 | 1986-11-18 | Fujitsu Limited | Register control processing system |
US6128728A (en) * | 1997-08-01 | 2000-10-03 | Micron Technology, Inc. | Virtual shadow registers and virtual register windows |
US20140223090A1 (en) * | 2013-02-01 | 2014-08-07 | Apple Inc | Accessing control registers over a data bus |
CN104253729A (zh) * | 2013-06-28 | 2014-12-31 | 施耐德电器工业公司 | 主从设备间通过寄存器接口传递数据的方法 |
CN105579961A (zh) * | 2013-09-25 | 2016-05-11 | Arm有限公司 | 数据处理系统 |
CN106066834A (zh) * | 2015-04-21 | 2016-11-02 | 黑莓有限公司 | 具有多设备消息传输的总线通信 |
CN109977061A (zh) * | 2017-12-28 | 2019-07-05 | 中兴通讯股份有限公司 | 一种中断处理方法及中断处理装置 |
CN109766308A (zh) * | 2019-01-15 | 2019-05-17 | 湖南泽天智航电子技术有限公司 | 一种基于localbus总线的多路onewire通信系统 |
CN112286852A (zh) * | 2019-07-25 | 2021-01-29 | 杭州海康汽车技术有限公司 | 基于iic总线的数据通信方法和数据通信装置 |
CN115202827A (zh) * | 2022-08-04 | 2022-10-18 | 昆仑芯(北京)科技有限公司 | 处理虚拟化中断的方法、中断控制器、电子设备和芯片 |
Also Published As
Publication number | Publication date |
---|---|
CN116226021B (zh) | 2023-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100979825B1 (ko) | 직접 메모리 액세스(dma) 전송 버퍼 프로세서 | |
EP2097828B1 (en) | Dmac to handle transfers of unknown lengths | |
CN104598402A (zh) | 一种闪存控制器和闪存控制器的控制方法 | |
US20070088874A1 (en) | Offload engine as processor peripheral | |
US20130262724A1 (en) | Method and Circuit Arrangement for Transmitting Data Between Processor Modules | |
WO1986005293A1 (en) | Dual function i/o controller | |
EP4152171B1 (en) | A processing system comprising a queued serial peripheral interface, related integrated circuit, device and method | |
CN115617718B (zh) | 一种基于AXI总线的读写保序方法及SoC系统 | |
US20120331240A1 (en) | Data processing device and data processing arrangement | |
JP4696199B2 (ja) | 転送ディスクリプタ用メモリを備えるusbホストコントローラ | |
CN113448902A (zh) | 有排队串行外围接口的处理系统、集成电路、设备和方法 | |
TWI483117B (zh) | 用於執行命令之裝置、主機控制器及用於執行命令之系統 | |
JP2009502072A (ja) | FlexRay通信モジュール及びFlexRay通信制御装置、並びにFlexRay通信接続とFlexRay加入者装置との間でメッセージを伝送する方法 | |
CN109616149A (zh) | 一种eMMC主机控制器、eMMC控制系统及控制方法 | |
CN116226021B (zh) | 数据收发方法、装置以及图形处理器 | |
KR102303424B1 (ko) | 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치 | |
CN116610601A (zh) | 一种数据传输装置及其控制方法、装置、介质 | |
CN112272824A (zh) | 数据传输方法、装置、设备、mcu和存储介质 | |
JP2008502977A (ja) | バス・コントローラのための割り込み方式 | |
CN116340217A (zh) | 数据处理方法及相关装置 | |
CN111444129B (zh) | Mdb数据传输的方法及终端设备 | |
US20140052879A1 (en) | Processor, information processing apparatus, and interrupt control method | |
CN111371799B (zh) | Mctp控制器收发数据的控制方法、装置及设备 | |
CN113419985A (zh) | Spi系统自动读取数据的控制方法及spi系统 | |
CN111124987B (zh) | 一种基于pcie的数据传输控制系统和方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |