CN108010554B - 一种数据访问系统、数据写入方法及数据读取方法 - Google Patents
一种数据访问系统、数据写入方法及数据读取方法 Download PDFInfo
- Publication number
- CN108010554B CN108010554B CN201610958714.2A CN201610958714A CN108010554B CN 108010554 B CN108010554 B CN 108010554B CN 201610958714 A CN201610958714 A CN 201610958714A CN 108010554 B CN108010554 B CN 108010554B
- Authority
- CN
- China
- Prior art keywords
- input
- cache
- data
- clock cycle
- circuit
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/26—Sensing or reading circuits; Data output circuits
Abstract
本发明公开了一种数据访问系统、数据写入方法及数据读取方法,属于通信领域。所述数据访问系统包括:系统时钟生成电路、倍频时钟生成电路、处理器核Core和缓存Cache;Core和Cache采用网络接口相连,网络接口的数据传输位宽为m1比特,Cache包含至少一个具有x个端口的随机存储器模块,随机存储器模块包括多个位宽为m2比特的存储行,其中的x*n个存储行组成Cache的一个Cache行,其中x*n*m2=m1。本发明实施例采用时分复用的方式使得单个随机存储器模块在n个倍频时钟周期中实现了第一Cache行数据的写入或者第二Cache行数据的读取,将多个随机存储器模块在空间上的并行转化为单个随机存储器模块在时间上的并行,从而达到提高随机存储器模块的资源利用率的效果。
Description
技术领域
本发明实施例涉及通信领域,特别涉及一种数据访问系统、数据写入方法及数据读取方法。
背景技术
现场可编程门阵列(英文:Field Programmable Gate Array,FPGA)芯片上可以设置多个处理器核(英文:Core),比如256核/512核。在单个FPGA芯片上可容纳的Core数量,是FPGA芯片的一项非常重要的衡量指标。
以设置有512个Core的FPGA芯片为例,采用了基于处理器簇(英文:Tile/Cluster)的结构。也即,该FPGA芯片包括32个Tile/Cluster,每个Tile/Cluster包括16个Core,Tile/Cluster可简称为Tile。参考图1,一个Tile 0包括:通过网络接口(英文:NetworkInterface,NI)相连的16个Core、16个一级缓存(英文:Level 1Cache,L1 Cache)、16个Tile配置寄存器、1个R1寄存器、1个R2寄存器、1个R3寄存器、1个网络接口设备(英文:NetworkInterface Device,NID)、1个二级缓存(英文:Level 2Cache,L2 Cache)。
其中,每个Core具有各自对应的L1 Cache,L1 Cache又分为一级数据缓存(Level1Data-Cache,L1 D-Cache)和一级指令缓存(Level 1Instruct–Cache,L1 I-Cache),每个Tile中设置有一个全局共享的L2 Cache,每个Tile均可以访问任何一个Tile中的L2Cache。除L1 Cache和L2 Cache以外,网络接口设备NID用于连接每个Tile;网络接口NI用于互连单个Tile中的16个Core以及该Tile中的其它器件;Tile配置寄存器(英文:TileRegister,Tile Reg)用于配置Tile内、外的互连;R1寄存器至R3寄存器是Tile地址设置寄存器,用于设定Core的访问地址范围。
上述的各个Cache中,L1 I-Cache的最大可容纳的数据量(容量)为32KB,L1 D-Cache的最大可容纳的数据量为4KB,L2 Cache的最大可容纳的数据量为16KB。各个Cache以缓存行(英文:Cache line)为基本单位进行数据写入或数据读取,比如,一个Cache行是512bit(也即64B,1B=8bit)的数据,每一个Cache行一次能传输的数据量(即位宽)为64B。由于Cache行的大小都是相同的,Cache行的大小决定了物理实现时需要使用的BRAM的个数,同时也决定了固定的容量下Cache行的行数。以BRAM的位宽为64bit为例,由于每一个Cache行的位宽为512bit,每一个Cache行的位宽除以单个BRAM的位宽得到物理实现时需要使用的BRAM的个数,即L1 I-Cache、L1 D-Cache和L2Cache都需要使用8个BRAM来拼接得到512bit的位宽,如图2所示。
由于单个BRAM的容量是32Kb,当位宽是64bit时,单个BRAM的深度为32Kb/64bit=32*1024/64=512行。而L1 D-Cache的容量为4KB,每一个Cache行的位宽为512bit,因此8个BRAM中的每个BRAM中实际使用资源的行数为64行,而8个BRAM中所拼接成的可用Cache行的总行数为512行,则L1D-Cache对8个BRAM的资源利用率为:64/512=1/8=12.5%。以此类推,L2 Cache对8个BRAM的资源利用率为50%,L1 I-Cache对8个BRAM的资源利用率为100%。对于8个BRAM拼接所组成的缓存,3种Cache各自的资源利用率如图3所示。
从图3可知,FPGA芯片中对BRAM的总资源利用率大约为60%,即导致40%的BRAM资源被闲置,使得BRAM的资源利用率低下,限制了单个FPGA芯片中可以容纳的处理器核数目。
发明内容
为了解决BRAM的资源利用率低下,限制了单个FPGA芯片中可以容纳的处理器核数目的问题,本发明实施例提供了一种数据访问系统、数据写入方法及数据读取方法。所述技术方案如下:
第一方面,提供了一种数据访问系统,该数据访问系统包括:系统时钟生成电路、倍频时钟生成电路、处理器核Core和缓存Cache;
系统时钟生成电路分别与Core和Cache相连,倍频时钟生成电路与Cache相连;
系统时钟生成电路,用于产生系统时钟周期;
倍频时钟生成电路,用于产生倍频时钟周期,每个系统时钟周期中包括n个倍频时钟周期;
Core和Cache采用网络接口相连,网络接口的数据传输位宽为m1比特,Cache包含至少一个具有x个端口的随机存储器模块,随机存储器模块包括多个位宽为m2比特的存储行,其中的x*n个存储行组成Cache的一个Cache行,其中x*n*m2=m1;Core,用于在第一系统时钟周期中向Cache发送写请求或读请求,写请求用于向Cache写入m1比特的第一Cache行数据,读请求用于从Cache中读取m1比特的第二Cache行数据;
Cache,用于在接收到写请求时,在第一系统时钟周期内的每个倍频时钟周期通过x个端口写入x个m2比特的第一分段数据;Cache还用于在接收到读请求时,在第一系统时钟周期内的每个倍频时钟周期通过x个端口读取x个m2比特的第二分段数据,并将第一系统时钟周期读取到的x*n个第二分段数据拼接为m1比特的第二Cache行数据,将m1比特的第二Cache行数据输出给Core;
其中,x为大于0的整数,n为大于1的整数,m1、m2均为整数且m1是m2的整数倍。
区别于背景技术中采用8个随机存储器模块在空间上拼接出一个完整Cache行的方案,本发明实施例采用时分复用的方式使得单个随机存储器模块在n个倍频时钟周期中实现了第一Cache行数据的写入或者第二Cache行数据的读取,将多个随机存储器模块在空间上的并行转化为单个随机存储器模块上的x*n个存储行在时间上的并行,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行的数据的传输,从而达到提高随机存储器模块的资源利用率的效果。
在第一方面的第一种可能的实施方式中,Cache包括:时钟编号生成电路、x个n:1输入电路和具有x个端口的随机存储器模块;
时钟编号生成电路的输入端与倍频时钟生成电路相连;时钟编号生成电路的输出端与x个n:1输入电路各自对应的控制端相连;
每个n:1输入电路的n组输入端通过网络接口与Core相连;第j个n:1输入电路的输出端与随机存储器模块中的第j个端口的输入引脚相连,1≤j≤x;
时钟编号生成电路,用于在第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号输出给x个n:1输入电路的控制端,i为整数且1≤i≤n;
每个n:1输入电路,用于根据第i选择信号,将n组输入端中的第i组输入端确定为第i个倍频时钟周期的输入端;
随机存储器模块,用于在第i个倍频时钟周期,从第j个端口的输入引脚上接收到有效的写请求时,将第j个端口的输入引脚上接收到的m2比特的第一分段数据写入写请求指定的存储地址所指向的存储行。
本发明实施例通过x个n:1输入电路,使得单个随机存储器模块在n个倍频时钟周期中将m1比特的第一Cache行数据被分为x*n个m2比特的第一分段数据,实现了第一Cache行数据的写入,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行的数据的写入,从而达到提高随机存储器模块的资源利用率的效果。
结合第一方面的第一种可能的实施方式,在第二种可能的实施方式中,每个n:1输入电路的每一组输入端均包括:数据输入端、地址输入端、使能输入端、请求输入端;每个n:1输入电路的输出端包括:数据输出端、地址输出端、使能输出端和请求输出端;
第j个n:1输入电路的数据输出端与随机存储器模块的第j个端口中的数据引脚相连;第j个n:1输入电路的地址输出端与随机存储器模块的第j个端口中的地址引脚相连;第j个n:1输入电路的使能输出端与随机存储器模块的第j个端口中的使能引脚相连;第j个n:1输入电路的请求输出端与随机存储器模块的第j个端口中的请求引脚相连;
随机存储器模块,还用于在第i个倍频时钟周期,当第j个端口的使能引脚为第一电平且请求引脚为第一电平时,确定接收到有效的写请求;将第j个端口的数据引脚上所接收到的m2比特的第一分段数据,写入第j个端口的地址引脚上所接收到的存储地址所指向的存储行。
结合第一方面的第一种可能的实施方式,在第三种可能的实施方式中,Cache还包括:x个解复用电路、x组预缓存寄存器组和拼接寄存器,每组预缓存寄存器组包括n个预缓存寄存器;
时钟编号生成电路的输出端还与x个解复用电路各自对应的控制端相连;
第j个解复用电路的输入端与随机存储器模块中的第j个端口的输出引脚相连;第j个解复用电路的n个输出端与第j组预缓存寄存器组的n个预缓存寄存器各自对应的输入端一一对应相连;
每组预缓存寄存器组中的n个预缓存寄存器的输出端与拼接寄存器的输入端相连;
拼接寄存器的控制端与系统时钟生成电路相连,拼接寄存器的输出端通过网络接口与Core相连;
随机存储器模块,还用于在第一系统时钟周期中的第i个倍频时钟周期,从第j个端口的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行中读取出m2比特的第二分段数据;
第j个解复用电路,用于在接收到第i选择信号之后的下一个选择信号时,通过解复用电路的第i个输出端,将随机存储器模块在第i个倍频时钟周期中读取出的m2比特的第二分段数据,在第i个倍频时钟周期的下一个倍频时钟周期输出至第j组预缓存寄存器组中的第i个预缓存寄存器;
第j组预缓存寄存器组,用于在第二系统时钟周期的第2个倍频时钟周期,将内部的n个预缓存寄存器所缓存的n个第二分段数据,输出至拼接寄存器;
拼接寄存器,用于在第二系统时钟周期的第3个倍频时钟周期将x*n个m2比特的第二分段数据拼接为m1比特的第二Cache行数据;在第三系统时钟周期将第二Cache行数据输出给Core。
本发明实施例通过x组预缓存寄存器组和拼接寄存器,每组预缓存寄存器组包括n个预缓存寄存器,使得单个随机存储器模块在n个倍频时钟周期中将x*n个m2比特的第二分段数据拼接为m1比特的第二Cache行数据,并将第二Cache行数据输出给Core,实现了第二Cache行数据的读取,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行的数据的读取,从而达到提高随机存储器模块的资源利用率的效果。
结合第一方面的第三种可能的实施方式,在第四种可能的实施方式中,每个n:1输入电路的每一组输入端均包括:数据输入端、地址输入端、使能输入端、请求输入端;每个n:1输入电路的输出端包括:数据输出端、地址输出端、使能输出端和请求输出端;
第j个n:1输入电路的数据输出端与随机存储器模块的第j个端口中的数据引脚相连;第j个n:1输入电路的地址输出端与随机存储器模块的第j个端口中的地址引脚相连;第j个n:1输入电路的使能输出端与随机存储器模块的第j个端口中的使能引脚相连;第j个n:1输入电路的请求输出端与随机存储器模块的第j个端口中的请求引脚相连;
随机存储器模块,还用于当第j个端口的使能引脚为第一电平且请求引脚为第二电平时,确定接收到有效的读请求;从第j个端口的地址引脚上所接收到的存储地址所指向的存储行中,读取出m2比特的第二分段数据。
第二方面,提供了一种数据写入方法,该数据写入方法是向一种数据访问系统写入数据的方法。
该数据访问系统包括:系统时钟生成电路、倍频时钟生成电路、处理器核Core和缓存Cache,系统时钟生成电路分别与Core和Cache相连,倍频时钟生成电路与Cache相连,系统时钟生成电路,用于产生系统时钟周期,倍频时钟生成电路,用于产生倍频时钟周期,每个系统时钟周期中包括n个倍频时钟周期,Core和Cache采用网络接口相连,网络接口的数据传输位宽为m1比特,Cache包含至少一个具有x个端口的随机存储器模块,随机存储器模块包括多个位宽为m2比特的存储行,其中的x*n个存储行组成Cache的一个Cache行,其中x*n*m2=m1,该方法包括:
Core在第一系统时钟周期中,向Cache发送写请求;写请求用于向Cache写入m1比特的第一Cache行数据;
Cache在接收到写请求时,在第一系统时钟周期内的每个倍频时钟周期通过x个端口写入x个m2比特的第一分段数据。
区别于背景技术中采用8个随机存储器模块拼接出一个完整Cache行的方案,本发明实施例采用时分复用的方式使得单个随机存储器模块在n个倍频时钟周期中实现了第一Cache行数据的写入,将多个随机存储器模块在空间上的并行转化为单个随机存储器模块在时间上的并行,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行的数据的写入,从而达到提高随机存储器模块的资源利用率的效果。
在第二方面的第一种可能的实施方式中,Cache包括:时钟编号生成电路、x个n:1输入电路和具有x个端口的随机存储器模块;时钟编号生成电路的输入端与倍频时钟生成电路相连;时钟编号生成电路的输出端与x个n:1输入电路各自对应的控制端相连;每个n:1输入电路的n组输入端通过网络接口与Core相连;第j个n:1输入电路的输出端与随机存储器模块中的第j个端口的输入引脚相连,1≤j≤x;
Cache在接收到写请求时,在第一系统时钟周期内的每个倍频时钟周期中通过x个端口写入x个m2比特的第一分段数据,包括:
时钟编号生成电路在第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号输出给n:1输入电路的控制端;
每个n:1输入电路根据第i选择信号将n组输入端中的第i组输入端确定为当前倍频时钟周期的输入端;
随机存储器模块在第i个倍频时钟周期,从第j个端口的输入引脚上接收到有效的写请求时,将第j个端口的输入引脚上接收到的m2比特的第一分段数据写入写请求指定的存储地址所指向的存储行。
结合第二方面的第一种可能的实施方式,在第二种可能的实施方式中,每个n:1输入电路的每一组输入端均包括:数据输入端、地址输入端、使能输入端、请求输入端;每个n:1输入电路的输出端包括:数据输出端、地址输出端、使能输出端和请求输出端;第j个n:1输入电路的数据输出端与随机存储器模块的第j个端口中的数据引脚相连;第j个n:1输入电路的地址输出端与随机存储器模块的第j个端口中的地址引脚相连;第j个n:1输入电路的使能输出端与随机存储器模块的第j个端口中的使能引脚相连;第j个n:1输入电路的请求输出端与随机存储器模块的第j个端口中的请求引脚相连;
随机存储器模块在第i个倍频时钟周期,从第j个端口的输入引脚上接收到有效的写请求时,将第j个端口的输入引脚上接收到的m2比特的第一分段数据写入写请求指定的存储地址所指向的存储行,包括:
随机存储器模块在第i个倍频时钟周期,当第j个端口的使能引脚为第一电平且请求引脚为第一电平时,确定接收到有效的写请求;
随机存储器模块将第j个端口的数据引脚上所接收到的m2比特的第一分段数据,写入第j个端口的地址引脚上所接收到的存储地址所指向的存储行。
第三方面,提供了一种数据读取方法,该数据读取方法是从一种数据访问系统读取数据的方法。
该数据访问系统包括:系统时钟生成电路、倍频时钟生成电路、处理器核Core和缓存Cache,所述系统时钟生成电路分别与所述Core和所述Cache相连,所述倍频时钟生成电路与所述Cache相连,所述系统时钟生成电路,用于产生系统时钟周期,所述倍频时钟生成电路,用于产生倍频时钟周期,每个所述系统时钟周期中包括n个所述倍频时钟周期,所述Core和所述Cache采用网络接口相连,所述网络接口的数据传输位宽为m1比特,所述Cache包含至少一个具有x个端口的随机存储器模块,所述随机存储器模块包括多个位宽为m2比特的存储行,其中的x*n个存储行组成所述Cache的一个Cache行,其中x*n*m2=m1,该方法包括:
Core在第一系统时钟周期中,向Cache发送读请求;读请求用于从Cache读取m1比特的第二Cache行数据;
Cache在接收到读请求时,在第一系统时钟周期内的每个倍频时钟周期通过x个端口读取x个m2比特的第二分段数据;将第一系统时钟周期读取到的x*n个第二分段数据拼接为m1比特的第二Cache行数据;将m1比特的第二Cache行数据输出给Core。
区别于背景技术中采用8个随机存储器模块拼接出一个完整Cache行的方案,本发明实施例采用时分复用的方式使得单个随机存储器模块在n个倍频时钟周期中实现了第二Cache行数据的读取,将多个随机存储器模块在空间上的并行转化为单个随机存储器模块在时间上的并行,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行的数据的读取,从而达到提高随机存储器模块的资源利用率的效果。
在第三方面的第一种可能的实施方式中,Cache还包括:x个解复用电路、x组预缓存寄存器组和拼接寄存器,每组预缓存寄存器组包括n个预缓存寄存器;时钟编号生成电路的输出端还与x个解复用电路各自对应的控制端相连;第j个解复用电路的输入端与随机存储器模块中的第j个端口的输出引脚相连;第j个解复用电路的n个输出端与第j组预缓存寄存器组的n个预缓存寄存器各自对应的输入端一一对应相连;每组预缓存寄存器组中的n个预缓存寄存器的输出端与拼接寄存器的输入端相连;拼接寄存器的控制端与系统时钟生成电路相连,拼接寄存器的输出端通过网络接口与Core相连;
Cache在接收到读请求时,在第一系统时钟周期内的每个倍频时钟周期通过x个端口读取x个m2比特的第二分段数据;将第一系统时钟周期读取到的x*n个第二分段数据拼接为m1比特的第二Cache行数据;将m1比特的第二Cache行数据输出给Core,,包括:
时钟编号生成电路在第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号输出给n:1输入电路的控制端;
每个n:1输入电路根据第i选择信号将n组输入端中的第i组输入端确定为第i个倍频时钟周期的输入端;
随机存储器模块在第i个倍频时钟周期,从第j个端口的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行中读取出m2比特的第二分段数据;
第j个解复用电路在接收到第i选择信号之后的下一个选择信号时,通过解复用电路的第i个输出端,将随机存储器模块在第i个倍频时钟周期中读取出的m2比特的第二分段数据,在第i个倍频时钟周期的下一个倍频时钟周期输出至第j组预缓存寄存器组中的第i个预缓存寄存器;
第j组预缓存寄存器组在第二系统时钟周期的第2个倍频时钟周期,将内部的n个预缓存寄存器所缓存的n个第二分段数据,输出至拼接寄存器;
拼接寄存器在第二系统时钟周期的第3个倍频时钟周期,将x*n个m2比特的第二分段数据拼接为m1比特的第二Cache行数据;在第三系统时钟周期将第二Cache行数据输出给Core。
结合第三方面的第一种可能的实施方式,在第二种可能的实施方式中,每个n:1输入电路的每一组输入端均包括:数据输入端、地址输入端、使能输入端、请求输入端;每个n:1输入电路的输出端包括:数据输出端、地址输出端、使能输出端和请求输出端;第j个n:1输入电路的数据输出端与随机存储器模块的第j个端口中的数据引脚相连;第j个n:1输入电路的地址输出端与随机存储器模块的第j个端口中的地址引脚相连;第j个n:1输入电路的使能输出端与随机存储器模块的第j个端口中的使能引脚相连;第j个n:1输入电路的请求输出端与随机存储器模块的第j个端口中的请求引脚相连;
随机存储器模块在第i个倍频时钟周期,从第j个端口的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行中读取出m2比特的第二分段数据,包括:
随机存储器模块在第i个倍频时钟周期,当第j个端口的使能引脚为第一电平且请求引脚为第二电平时,确定接收到有效的读请求;
随机存储器模块从第j个端口的地址引脚上所接收到的存储地址所指向的存储行中,读取出m2比特的第二分段数据。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是背景技术涉及的一种FPGA芯片中处理器簇的结构示意图;
图2是背景技术涉及的一种FPGA芯片中每一个Cache行位宽的拼接方式的原理示意图;
图3是背景技术涉及的一种FPGA芯片中3种Cache各自的资源利用率的原理示意图;
图4A是本发明一个实施例提供的一种数据访问系统的结构示意图;
图4B是本发明一个实施例提供的一种FPGA芯片的结构示意图;
图5是本发明一个实施例提供的数据写入方法的流程图;
图6是本发明一个实施例提供的数据读取方法的流程图;
图7是本发明一个实施例提供的一种FPGA芯片中每一个Cache行位宽的拼接方式的原理示意图;
图8是本发明另一个实施例提供的一种FPGA芯片的结构示意图;
图9是本发明另一个实施例提供的数据写入方法的流程图;
图10是本发明另一个实施例提供的数据读取方法的流程图;
图11是本发明另一个实施例提供的一种FPGA芯片的结构示意图;
图12是本发明另一个实施例提供的数据写入方法的流程图;
图13是本发明另一个实施例提供的数据读取方法的流程图;
图14是本发明另一个实施例提供的一种FPGA芯片中的Cache的电路结构图;
图15是本发明另一个实施例提供的数据写入方法的流程图;
图16是本发明另一个实施例提供的数据读取方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
首先,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或隐含所指示的技术特征的数量。由此,限定的“第一”、“第二”的特征可以明示或隐含地包括一个或者更多个该特征。在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。
请参考图4A,其示出了本发明一个实施例提供的一种数据访问系统的结构示意图。该数据访问系统400包括:系统时钟生成电路41、倍频时钟生成电路42、处理器核Core43和缓存Cache44。
系统时钟生成电路41分别与Core43和Cache44相连,倍频时钟生成电路42与Cache44相连;系统时钟生成电路41,用于产生系统时钟周期。
倍频时钟生成电路42,用于产生倍频时钟周期,每个系统时钟周期中包括n个倍频时钟周期。
Core43和Cache44采用网络接口45相连,网络接口45的数据传输位宽为m1比特,Cache44包含至少一个具有x个端口的随机存储器模块44a,随机存储器模块44a包括多个位宽为m2比特的存储行,其中的x*n个存储行组成Cache44的一个Cache行,其中x*n*m2=m1。
需要说明的一点是,本发明实施例中的数据访问系统400可以是一种芯片,系统时钟生成电路41、倍频时钟生成电路42、Core43和Cache44都集成在该芯片上;数据访问系统可以是由几种芯片组成;示意性的,系统时钟生成电路41和倍频时钟生成电路42分布在芯片A中,Core43分布在芯片B中,Cache44分布在芯片C中,芯片A、芯片B和芯片C组成一个数据访问系统。
需要说明的另一点是,本发明实施例的数据访问系统中的芯片可以是FPGA芯片,也可以是中央处理器(Central Processing Unit,CPU)芯片、图形处理器(GraphicsProcessing Unit,GPU)芯片或专用集成电路(Application Specific IntegratedCircuit,ASIC)芯片,本发明实施例对此不加以限定。下面以数据访问系统为一种芯片,该芯片是FPGA芯片为例,具体说明。
请参考图4B,其示出了本发明一个实施例提供的一种FPGA芯片400的结构示意图。该FPGA芯片包括:至少两个Tile10、系统时钟生成电路20和倍频时钟生成电路30;至少两个Tile10之间采用NID40相连。
存在一个Tile包括:Core60和Cache,Core60和Cache之间采用网络接口50相连,网络接口50的数据传输位宽为m1比特。由于Core60为多个,Core60通常采用一个多路选择器(英文:multiplexer,MUX)与网络接口50相连。
可选的,Cache是L2 Cache70、L1 D-Cache80和L1 I-Cache90中的至少一种Cache。由于L1 D-Cache80和L1 I-Cache90均为多个,L1 D-Cache80和L1 I-Cache90通常采用一个MUX与网络接口50相连。
系统时钟生成电路20分别与Core60和Cache相连,倍频时钟生成电路30与Cache相连。
其中,系统时钟生成电路20用于产生系统时钟周期,倍频时钟生成电路30用于产生倍频时钟周期,每个系统时钟周期中包括n个倍频时钟周期。
请参考图5,其示出了本发明一个实施例提供的数据写入方法的流程图。该数据写入方法用于向图4A所提供的数据访问系统或图4B所提供的FPGA芯片的Cache中写入数据。该数据写入方法,包括:
步骤501,Core在第一系统时钟周期中,向Cache发送写请求。
可选的,写请求用于向Cache写入m1比特的第一Cache行数据。
步骤502,Cache在接收到写请求时,在第一系统时钟周期内的每个倍频时钟周期通过所述x个端口写入x个m2比特的第一分段数据。
可选的,每个系统时钟周期中包括n个倍频时钟周期,每个第一分段数据是第一Cache行数据中的x*n分之一;其中,x为大于0的整数,n为大于1的整数,m1、m2均为整数且m1是m2的整数倍;示意性的,m1、n、m2均为2的幂。
比如,每个系统时钟周期包括8个倍频时钟周期,写请求用于向Cache写入512比特的第一Cache行数据,Cache在第一系统时钟周期的每个倍频时钟周期中写入64比特的第一分段数据,Cache通过8个倍频时钟周期写入8个64比特的第一分段数据,实现了在第一系统时钟周期内写入了512比特的第一Cache行数据。
综上所述,通过Cache在接收到写请求时,在第一系统时钟周期内的每个倍频时钟周期通过所述x个端口写入x个m2比特的第一分段数据;区别于背景技术中采用8个随机存储器模块拼接出一个完整Cache行的方案,本发明实施例采用时分复用的方式使得单个随机存储器模块在8个倍频时钟周期中实现了第一Cache行数据的写入,将多个随机存储器模块在空间上的并行转化为单个随机存储器模块中的x*n个存储行在时间上的并行,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行数据的写入,从而达到提高随机存储器模块的资源利用率的效果。
请参考图6,其示出了本发明一个实施例提供的数据读取方法的流程图。该数据读取方法用于向图4A所提供的数据访问系统或图4B所提供的FPGA芯片的Cache中读取数据。该数据读取方法,包括:
步骤601,Core在第一系统时钟周期中,向Cache发送读请求。
其中,读请求用于从Cache读取m1比特的第二Cache行数据。
步骤602,Cache在接收到读请求时,在第一系统时钟周期内的每个倍频时钟周期通过所述x个端口读取x个m2比特的第二分段数据。
比如,每个系统时钟周期包括8个倍频时钟周期,读请求用于从Cache读出512比特的第二Cache行数据,Cache在第一系统时钟周期的每个倍频时钟周期中读取64比特的第二分段数据,Cache通过8个倍频时钟周期读取8个64比特的第二分段数据,实现了在第一系统时钟周期内读取512比特的第二Cache行数据。
步骤603,Cache将第一系统时钟周期读取到的x*n个第二分段数据拼接为m1比特的第二Cache行数据。
步骤604,Cache将m1比特的第二Cache行数据输出给Core。
需要说明的是,“第一系统时钟周期”可以是任意一个系统时钟周期,第一系统时钟周期、第二系统时钟周期和第三系统时钟周期表示这三个系统时钟周期是顺序相邻,其中的第一”、“第二”和“第三”仅用于描述目的,本发明实施例对此不加以限定。
综上所述,通过Cache在接收到读请求时,在第一系统时钟周期内的每个倍频时钟周期通过所述x个端口读取x个m2比特的第二分段数据,并将第一系统时钟周期读取到的x*n个第二分段数据拼接为m1比特的第二Cache行数据,将m1比特的第二Cache行数据输出给Core;区别于背景技术中采用8个随机存储器模块拼接出一个完整Cache行的方案,本发明实施例采用时分复用的方式使得单个随机存储器模块在8个倍频时钟周期中实现了第二Cache行数据的读取,将多个随机存储器模块在空间上的并行转化为单个随机存储器模块中的x*n个存储行在时间上的并行,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行的数据的读取,从而达到了提高随机存储器模块的资源利用率的效果。
需要说明的是,本发明实施例中一个Cache行的数据读取/写入采用的是时分复用的方法。在下面的实施例中,以随机存储器模块为BRAM为例进行说明,与背景技术的区别在于,背景技术的原理示意如图7左侧所示,假设一个Cache行是512bit的数据,即位宽为512bit,以单个BRAM的位宽为64bit为例,每一个Cache行的位宽除以单个BRAM的位宽得到物理实现时需要使用的BRAM的个数,即在1个系统时钟周期Cache需要使用8个BRAM在空间上拼接得到512bit的位宽;本发明实施例的原理示意如图7右侧所示,本发明实施例中Cache能够使用1个BRAM0,将1个系统时钟周期分成8个倍频时钟周期,在每个倍频时钟周期内BRAM0提供的位宽为64bit,则经过8个倍频时钟周期即1个完整的系统时钟周期,BRAM0一共提供8个64bit的存储行,总计512bit的位宽,从而实现一个Cache行的数据的读取或写入。
上述图4B实施例中的Cache行的位宽m1、BRAM的位宽m2、倍频时钟周期的倍数n在不同的实施例中可以具有不同的取值。
在第一种可能的实现方式中,BRAM采用单端口的BRAM,一个端口提供的位宽m2=64bit,Cache行的位宽m1=512bit,倍频时钟周期的倍数n=8,下文中采用图8至图10所示实施例来介绍该种实现方式。
在第二种可能的实现方式中,BRAM采用双端口的BRAM,每个端口提供的位宽m2=64bit,Cache行的位宽m1=512bit,倍频时钟周期的倍数n=4,下文中采用图11至图16所示实施例来介绍该种实现方式。
请参考图8,其示出了本发明一个实施例提供的Cache的结构示意图。该Cache可以是图4B所示的L2 Cache、L1 D-Cache和L1 I-Cache中的任意一种Cache。该Cache包括:时钟编号生成电路61、8:1输入电路62、具有单个端口A的BRAM63、解复用电路64、预缓存寄存器组65和拼接寄存器66。
时钟编号生成电路61的输入端与图4B中的倍频时钟生成电路30相连;时钟编号生成电路61的输出端与8:1输入电路62的控制端相连。
8:1输入电路的8组输入端通过网络接口与Core相连;8:1输入电路的输出端与BRAM62的端口A上的输入引脚相连。
时钟编号生成电路61的输出端还与解复用电路64的控制端相连,解复用电路64的输入端与BRAM63的端口A上的输出引脚相连;解复用电路64的8个输出端与预缓存寄存器组65的8个预缓存寄存器各自对应的输入端一一对应相连。
预缓存寄存器组65中的8个预缓存寄存器的输出端与拼接寄存器66的输入端相连。
拼接寄存器66的输出端通过网络接口与Core60相连。拼接寄存器66的控制端还与图4B中的系统时钟生成电路20相连。
其中,BRAM63中的端口A包括1个输入端和1个输出端,解复用电路64包括1个输入端和8个输出端,每个预缓存寄存器包括1个输入端和1个输出端,拼接寄存器66包括1个输入端和1个输出端。
请参考图9,其示出了本发明另一个实施例提供的数据写入方法的流程图。该数据写入方法用于向图8所提供的FPGA芯片的Cache中写入数据。该数据写入方法,包括:
步骤901,Core在第一系统时钟周期中,向Cache发送写请求。
可选的,写请求用于向Cache写入512比特的第一Cache行数据。
可选的,Core在第一系统时钟周期中,通过网络接口向Cache中的8:1输入电路发送写请求。
步骤902,时钟编号生成电路在第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号。
其中,i为整数且1≤i≤8。
可选地,时钟编号生成电路在每一个系统时钟周期的第i个倍频时钟周期,生成第i选择信号。
步骤903,时钟编号生成电路将生成的第i选择信号输出给8:1输入电路的控制端。
步骤904,8:1输入电路根据第i选择信号将8组输入端中的第i组输入端确定为当前倍频时钟周期的输入端。步骤905,8:1输入电路在确定出当前倍频时钟周期的输入端后,向BRAM输出写请求。
步骤906,BRAM在第i个倍频时钟周期,从端口的输入引脚上接收到有效的写请求时,将端口的输入引脚上接收到的m2比特的第一分段数据写入写请求指定的存储地址所指向的存储行。
在一个具体的例子中,Core在第一系统时钟周期中向Cache发送写请求,写请求用于向Cache写入512比特的第一Cache行数据,该第一Cache行数据包括8个64bit的第一分段数据。对于第一系统时钟周期的8个倍频时钟周期,Cache中各个部件执行的步骤如下:
在第1个倍频时钟周期,时钟编号生成电路61生成第1选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第1选择信号后,根据第1选择信号将8组输入端中的第1组输入端确定为当前倍频时钟周期的输入端;该第1组输入端上的写请求用于写入第1个第一分段数据,BRAM63在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第1个第一分段数据写入到该写请求指定的存储地址所指向的存储行0;
在第2个倍频时钟周期,时钟编号生成电路61生成第2选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第2选择信号后,根据第2选择信号将8组输入端中的第2组输入端确定为当前倍频时钟周期的输入端;该第2组输入端上的写请求用于写入第2个第一分段数据,BRAM63在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第2个第一分段数据写入到该写请求指定的存储地址所指向的存储行1;
在第3个倍频时钟周期,时钟编号生成电路61生成第3选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第3选择信号后,根据第3选择信号将8组输入端中的第3组输入端确定为当前倍频时钟周期的输入端;该第3组输入端上的写请求用于写入第3个第一分段数据,BRAM63在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第3个第一分段数据写入到该写请求指定的存储地址所指向的存储行2;
在第4个倍频时钟周期,时钟编号生成电路61生成第4选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第4选择信号后,根据第4选择信号将8组输入端中的第4组输入端确定为当前倍频时钟周期的输入端;该第4组输入端上的写请求用于写入第4个第一分段数据,BRAM63在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第4个第一分段数据写入到该写请求指定的存储地址所指向的存储行3;
在第5个倍频时钟周期,时钟编号生成电路61生成第5选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第5选择信号后,根据第5选择信号将8组输入端中的第5组输入端确定为当前倍频时钟周期的输入端;该第5组输入端上的写请求用于写入第5个第一分段数据,BRAM63在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第5个第一分段数据写入到该写请求指定的存储地址所指向的存储行4;
在第6个倍频时钟周期,时钟编号生成电路61生成第6选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第6选择信号后,根据第6选择信号将8组输入端中的第6组输入端确定为当前倍频时钟周期的输入端;该第6组输入端上的写请求用于写入第6个第一分段数据,BRAM63在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第6个第一分段数据写入到该写请求指定的存储地址所指向的存储行5;
在第7个倍频时钟周期,时钟编号生成电路61生成第7选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第7选择信号后,根据第7选择信号将8组输入端中的第7组输入端确定为当前倍频时钟周期的输入端;该第7组输入端上的写请求用于写入第7个第一分段数据,BRAM63在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第7个第一分段数据写入到该写请求指定的存储地址所指向的存储行6;
在第8个倍频时钟周期,时钟编号生成电路61生成第8选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第8选择信号后,根据第8选择信号将8组输入端中的第8组输入端确定为当前倍频时钟周期的输入端;该第8组输入端上的写请求用于写入第8个第一分段数据,BRAM63在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第8个第一分段数据写入到该写请求指定的存储地址所指向的存储行7。
需要说明的是,一个系统时钟周期分为8个倍频时钟周期,为第1个倍频时钟周期至第8个倍频时钟周期;时钟编号生成电路61生成8个选择信号,为第1选择信号至第8选择信号。
综上所述,本发明实施例通过BRAM在第i个倍频时钟周期,从端口的输入引脚上接收到有效的写请求时,将端口的输入引脚上接收到的64比特的第一分段数据写入写请求指定的存储地址所指向的存储行;区别于背景技术中采用8个BRAM拼接出一个完整Cache行的方案,本发明实施例采用时分复用的方式使得单个BRAM在8个倍频时钟周期中实现了第一Cache行数据的写入,将多个BRAM在空间上的并行转化为单个BRAM在时间上的并行,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行数据的写入,从而达到提高BRAM的资源利用率的效果。
请参考图10,其示出了本发明另一个实施例提供的数据读取方法的流程图。该数据读取方法用于向如图8所提供的FPGA芯片的Cache中读取数据。该数据读取方法,包括:
步骤1001,Core在第一系统时钟周期中,向Cache发送读请求。
可选的,读请求用于从Cache读取512比特的第二Cache行数据。
可选的,Core在第一系统时钟周期中,通过网络接口向Cache中的8:1输入电路发送读请求。
步骤1002,时钟编号生成电路在第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号。
可选地,时钟编号生成电路在每个系统时钟周期中的第i个倍频时钟周期,生成第i选择信号。其中,i为整数且1≤i≤8。
步骤1003,时钟编号生成电路将生成的第i选择信号输出给8:1输入电路的控制端。
步骤1004,8:1输入电路根据第i选择信号将8组输入端中的第i组输入端确定为第i个倍频时钟周期的输入端。
步骤1005,8:1输入电路在确定出的当前倍频时钟周期的输入端后,向BRAM发送读请求。
步骤1006,BRAM在第i个倍频时钟周期,从端口的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行中读取出m2比特的第二分段数据。
可选的,BRAM在第i个倍频时钟周期,从端口的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行中读取出64比特的第二分段数据。
步骤1007,解复用电路在接收到第i个选择信号,通过通过解复用电路的第i个输入端,在第i个倍频时钟周期中接收BRAM在第i个倍频时钟周期中读取出m2比特的第二分段数据。
步骤1008,解复用电路在接收到第i选择信号之后的下一个选择信号时,通过解复用电路的第i个输出端,将BRAM在第i个倍频时钟周期中读取出的m2比特的第二分段数据,在第i个倍频时钟周期的下一个倍频时钟周期输出至预缓存寄存器组中的第i个预缓存寄存器。
步骤1009,预缓存寄存器组在第二系统时钟周期的第2个倍频时钟周期,将内部的8个预缓存寄存器所缓存的8个第二分段数据,输出至拼接寄存器。
步骤1010,拼接寄存器在第二系统时钟周期的第3个倍频时钟周期,将8个m2比特的第二分段数据拼接为m1比特的第二Cache行数据。步骤1011,在第三系统时钟周期将第二Cache行数据输出给Core。
在一个具体的例子中,Core在第一系统时钟周期中向Cache发送读请求,读请求用于从Cache读取512比特的第二Cache行数据,该第二Cache行数据包括8个64bit的第二分段数据。对于一个512比特的第二Cache行数据的读取,Cache中各个部件执行的步骤如下:
在第一系统时钟周期的第1个倍频时钟周期,时钟编号生成电路61生成第1选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第1选择信号后,根据第1选择信号将8组输入端中的第1组输入端确定为当前倍频时钟周期的输入端;该第1组输入端上的读请求用于读取第1个第二分段数据,BRAM63在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行0中读取出64比特的第二分段数据。
在第一系统时钟周期的第2个倍频时钟周期,时钟编号生成电路61生成第2选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第2选择信号后,根据第2选择信号将8组输入端中的第2组输入端确定为当前倍频时钟周期的输入端;该第2组输入端上的读请求用于读取第2个第二分段数据,BRAM63在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行1中读取出64比特的第二分段数据。另外,解复用电路64在接收到时钟编号生成电路61输出的第2选择信号时,将解复用电路64中的第1个输出端确定为当前倍频时钟周期的输出端,通过解复用电路64的第1个输出端,将BRAM63在第一系统时钟周期中的第1个倍频时钟周期中读取出的64比特的第二分段数据,在第一系统时钟周期中的第2个倍频时钟周期输出至预缓存寄存器组65中的第1个预缓存寄存器;第1个预缓存寄存器缓存该64比特的第二分段数据。
在第一系统时钟周期的第3个倍频时钟周期,时钟编号生成电路61生成第3选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第3选择信号后,根据第3选择信号将8组输入端中的第3组输入端确定为当前倍频时钟周期的输入端;该第3组输入端上的读请求用于读取第3个第二分段数据,BRAM63在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行2中读取出64比特的第二分段数据。另外,解复用电路64在接收到时钟编号生成电路61输出的第3选择信号时,将解复用电路64中的第2个输出端确定为当前倍频时钟周期的输出端,通过解复用电路64的第2个输出端,将BRAM63在第一系统时钟周期中的第2个倍频时钟周期中读取出的64比特的第二分段数据,在第一系统时钟周期中的第3个倍频时钟周期输出至预缓存寄存器组65中的第2个预缓存寄存器;第2个预缓存寄存器缓存该64比特的第二分段数据。
在第一系统时钟周期的第4个倍频时钟周期,时钟编号生成电路61生成第4选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第4选择信号后,根据第4选择信号将8组输入端中的第4组输入端确定为当前倍频时钟周期的输入端;该第4组输入端上的读请求用于读取第4个第二分段数据,BRAM63在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行3中读取出64比特的第二分段数据。另外,解复用电路64在接收到时钟编号生成电路61输出的第4选择信号时,将解复用电路64中的第3个输出端确定为当前倍频时钟周期的输出端,通过解复用电路64的第3个输出端,将BRAM63在第一系统时钟周期中的第3个倍频时钟周期中读取出的64比特的第二分段数据,在第一系统时钟周期中的第4个倍频时钟周期输出至预缓存寄存器组65中的第3个预缓存寄存器;第3个预缓存寄存器缓存该64比特的第二分段数据。
在第一系统时钟周期的第5个倍频时钟周期,时钟编号生成电路61生成第5选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第5选择信号后,根据第5选择信号将8组输入端中的第5组输入端确定为当前倍频时钟周期的输入端;该第5组输入端上的读请求用于读取第5个第二分段数据,BRAM63在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行4中读取出64比特的第二分段数据。另外,解复用电路64在接收到时钟编号生成电路61输出的第5选择信号时,将解复用电路64中的第4个输出端确定为当前倍频时钟周期的输出端,通过解复用电路64的第4个输出端,将BRAM63在第一系统时钟周期中的第4个倍频时钟周期中读取出的64比特的第二分段数据,在第一系统时钟周期中的第5个倍频时钟周期输出至预缓存寄存器组65中的第4个预缓存寄存器;第4个预缓存寄存器缓存该64比特的第二分段数据。
在第一系统时钟周期的第6个倍频时钟周期,时钟编号生成电路61生成第6选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第6选择信号后,根据第6选择信号将8组输入端中的第6组输入端确定为当前倍频时钟周期的输入端;该第6组输入端上的读请求用于读取第6个第二分段数据,BRAM63在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行5中读取出64比特的第二分段数据。另外,解复用电路在接收到时钟编号生成电路61输出的第6选择信号时,将解复用电路64中的第5个输出端确定为当前倍频时钟周期的输出端,通过解复用电路64的第5个输出端,将BRAM63在第一系统时钟周期中的第5个倍频时钟周期中读取出的64比特的第二分段数据,在第一系统时钟周期中的第6个倍频时钟周期输出至预缓存寄存器组65中的第5个预缓存寄存器;第5个预缓存寄存器缓存该64比特的第二分段数据。
在第一系统时钟周期的第7个倍频时钟周期,时钟编号生成电路61生成第7选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第7选择信号后,根据第7选择信号将8组输入端中的第7组输入端确定为当前倍频时钟周期的输入端;该第7组输入端上的读请求用于读取第7个第二分段数据,BRAM63在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行6中读取出64比特的第二分段数据。另外,解复用电路64在接收到时钟编号生成电路61输出的第7选择信号时,将解复用电路64中的第6个输出端确定为当前倍频时钟周期的输出端,通过解复用电路64的第6个输出端,将BRAM63在第一系统时钟周期中的第6个倍频时钟周期中读取出的64比特的第二分段数据,在第一系统时钟周期中的第7个倍频时钟周期输出至预缓存寄存器组65中的第6个预缓存寄存器;第6个预缓存寄存器缓存该64比特的第二分段数据。
在第一系统时钟周期的第8个倍频时钟周期,时钟编号生成电路61生成第8选择信号输出给8:1输入电路62的控制端;8:1输入电路在控制端上接收到第8选择信号后,根据第8选择信号将8组输入端中的第8组输入端确定为当前倍频时钟周期的输入端;该第8组输入端上的读请求用于读取第8个第二分段数据,BRAM63在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行7中读取出64比特的第二分段数据。另外,解复用电路64在接收到时钟编号生成电路61输出的第8选择信号时,将解复用电路64中的第7个输出端确定为当前倍频时钟周期的输出端,通过解复用电路64的第7个输出端,将BRAM63在第一系统时钟周期中的第7个倍频时钟周期中读取出的64比特的第二分段数据,在第一系统时钟周期中的第8个倍频时钟周期输出至预缓存寄存器组65中的第7个预缓存寄存器;第7个预缓存寄存器缓存该64比特的第二分段数据。
在第二系统时钟周期的第1个倍频时钟周期,解复用电路64在接收到时钟编号生成电路61输出的第1选择信号时,将解复用电路64中的第8个输出端确定为当前倍频时钟周期的输出端,通过解复用电路64的第8个输出端,将BRAM63在第一个系统时钟周期中的第8个倍频时钟周期中读取出的64比特的第二分段数据,在第二系统时钟周期中的第1个倍频时钟周期输出至预缓存寄存器组65中的第8个预缓存寄存器;第8个预缓存寄存器缓存该64比特的第二分段数据。
在第二系统时钟周期的第2个倍频时钟周期,预缓存寄存器组将内部的8个预缓存寄存器所缓存的8个第二分段数据,输出至拼接寄存器。
在第二系统时钟周期的第3个倍频时钟周期,拼接寄存器将8个64比特的第二分段数据拼接为512比特的第二Cache行数据。
在第三系统时钟周期,当拼接寄存器接收到第三系统时钟周期的时钟信号上升沿时,拼接寄存器将第二Cache行数据输出给Core。
综上所述,通过预缓存寄存器组在第二系统时钟周期的第2个倍频时钟周期,将内部的8个预缓存寄存器所缓存的8个第二分段数据,输出至拼接寄存器,拼接寄存器在第二系统时钟周期的第3个倍频时钟周期,将8个64比特的第二分段数据拼接为512比特的第二Cache行数据,在第三系统时钟周期将第二Cache行数据输出给Core;区别于背景技术中采用8个BRAM拼接出一个完整Cache行的方案,本发明实施例采用时分复用的方式使得单个BRAM在8个倍频时钟周期中实现了第二Cache行数据的读取,将多个BRAM在空间上的并行转化为单个BRAM在时间上的并行,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行的数据的读取,从而达到了提高BRAM的资源利用率的效果。
请参考图11,其示出了本发明另一实施例提供的Cache的结构示意图。该Cache可以是图4B所示的L2 Cache、L1 D-Cache和L1 I-Cache中的任意一种Cache。该Cache包括:时钟编号生成电路130、2个4:1输入电路,即第1个4:1输入电路131A和第2个4:1输入电路131B、具有双端口的BRAM132、2个解复用电路,即第1个解复用电路134A和第2个解复用电路134B,2组预缓存寄存器组,即第1组预缓存寄存器组135A和第2组预缓存寄存器组135B,和拼接寄存器136,每组预缓存寄存器组包括4个预缓存寄存器。
可选的,BRAM132包括两个端口,分别为第1个端口即端口A和第2个端口即端口B。
时钟编号生成电路130的输入端与倍频时钟生成电路133相连。时钟编号生成电路130的输出端与2个4:1输入电路各自对应的控制端一一对应相连。
每个4:1输入电路的4组输入端通过网络接口与Core60相连。
可选的,第1个4:1输入电路131A的输出端与BRAM132中的端口A的输入引脚相连,第2个4:1输入电路131B的输出端与BRAM132中的端口B的输入引脚相连。
时钟编号生成电路130的输出端还与2个解复用电路各自对应的控制端一一对应相连。
可选的,第1个解复用电路134A的输入端与BRAM132中的端口A的输出端相连;第2个解复用电路134B的输入端与BRAM132中的端口B的输出端相连。第1个解复用电路134A的4个输出端与第1组预缓存寄存器组135A的4个预缓存寄存器各自对应的输入端一一对应相连,第2个解复用电路134B的4个输出端与第2组预缓存寄存器组135B的4个预缓存寄存器各自对应的输入端一一对应相连。
每组预缓存寄存器组中的4个预缓存寄存器的输出端与拼接寄存器136的输入端相连。
拼接寄存器136的输出端通过网络接口与Core60相连。拼接寄存器136的控制端还与图4B中的系统时钟生成电路20相连。
其中,BRAM132中的端口A包括1个输入端和1个输出端,BRAM132中的端口B包括1个输入端和1个输出端,每个解复用电路134包括1个输入端和4个输出端,每组预缓存寄存器组135包括4个输入端和4个输出端,每个预缓存寄存器包括1个输入端和1个输出端,拼接寄存器136包括1个输入端和1个输出端。
请参考图12,其示出了本发明另一个实施例提供的数据写入方法的流程图。该数据写入方法用于向图11所提供的FPGA芯片的Cache中写入数据。该数据写入方法,包括:
步骤1201,Core在第一系统时钟周期中,向Cache发送写请求。
其中,写请求用于向Cache写入512比特的第一Cache行数据。
可选的,Core第一系统时钟周期中,通过网络接口向Cache中的每个4:1输入电路发送写请求。
步骤1202,时钟编号生成电路在第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号
步骤1203,时钟编号生成电路将生成的第i选择信号输出给4:1输入电路的控制端。
步骤1204,每个4:1输入电路根据第i选择信号将4组输入端中的第i组输入端确定为当前倍频时钟周期的输入端。
其中,i为整数且1≤i≤4。
步骤1205,每个4:1输入电路在确定出当前倍频时钟周期的输入端后,向BRAM输出写请求。
步骤1206,BRAM在第i个倍频时钟周期,从第j个端口的输入引脚上接收到有效的写请求时,将第j个端口的输入引脚上接收到的m2比特的第一分段数据写入写请求指定的存储地址所指向的存储行。
可选的,x和m2均为2的幂。
综上所述,通过BRAM在第i个倍频时钟周期,从第j个端口的输入引脚上接收到有效的写请求时,将第j个端口的输入引脚上接收到的比特的第一分段数据写入写请求指定的存储地址所指向的存储行;区别于背景技术中采用8个BRAM拼接出一个完整Cache行的方案,本发明实施例采用时分复用的方式使得单个BRAM在4个倍频时钟周期中实现了第一Cache行数据的写入,将多个BRAM在空间上的并行转化为单个BRAM在时间上的并行,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行数据的写入,从而达到提高BRAM的资源利用率的效果。
在一个具体的例子中,Core60在第一系统时钟周期中向Cache发送写请求,写请求用于向Cache写入512比特的第一Cache行数据,该第一Cache行数据包括8个64bit的第一分段数据,分别为第一分段数据0、第一分段数据1、第一分段数据2、第一分段数据3、第一分段数据4、第一分段数据5、第一分段数据6和第一分段数据7,将第一分段数据0、第一分段数据1、第一分段数据2和第一分段数据3分为一组,与第1个4:1输入电路131A对应;将第一分段数据4、第一分段数据5、第一分段数据6和第一分段数据7分为另一组,与第2个4:1输入电路131B对应。
在第一系统时钟周期的第1个倍频时钟周期中,第一分段数据包括第一分段数据0和第一分段数据4,其中第一分段数据0对应端口A,第一分段数据4对应端口B;在第一系统时钟周期的第2个倍频时钟周期中,第一分段数据包括第一分段数据1和第一分段数据5,其中第一分段数据1对应端口A,第一分段数据5对应端口B;在第一系统时钟周期的第3个倍频时钟周期中,第一分段数据包括第一分段数据2和第一分段数据6,其中第一分段数据2对应端口A,第一分段数据6对应端口B;在第一系统时钟周期的第4个倍频时钟周期中,第一分段数据包括第一分段数据3和第一分段数据7,其中第一分段数据3对应端口A,第一分段数据7对应端口B。
对于第一系统时钟周期的4个倍频时钟周期,Cache中各个部件执行的步骤如下:
在第1个倍频时钟周期,时钟编号生成电路130生成第1选择信号输出给第1个4:1输入电路131A和第2个4:1输入电路131B的控制端;第1个4:1输入电路131A在控制端上接收到第1选择信号后,根据第1选择信号将4组输入端中的第1组输入端中的输入端0确定为当前倍频时钟周期的输入端;该第1组输入端中的输入端0上的写请求用于写入第一分段数据0,BRAM132在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第一分段数据0写入到该写请求指定的存储地址所指向的存储行A0;第2个4:1输入电路131B在控制端上接收到第1选择信号后,根据第1选择信号将4组输入端中的第1组输入端中的输入端4确定为当前倍频时钟周期的输入端;该第1组输入端中的输入端4上的写请求用于写入第一分段数据4,BRAM132在端口B的输入引脚上接收到有效的写请求时,将端口B的输入引脚上收到的64比特的第一分段数据4写入到该写请求指定的存储地址所指向的存储行B0。
在第2个倍频时钟周期,时钟编号生成电路130生成第2选择信号输出给第1个4:1输入电路131A和第2个4:1输入电路131B的控制端;第1个4:1输入电路131A在控制端上接收到第2选择信号后,根据第2选择信号将4组输入端中的第2组输入端中的输入端1确定为当前倍频时钟周期的输入端;该第2组输入端中的输入端1上的写请求用于写入第一分段数据1,BRAM132在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第一分段数据1写入到该写请求指定的存储地址所指向的存储行A1;第2个4:1输入电路131B在控制端上接收到第2选择信号后,根据第2选择信号将4组输入端中的第2组输入端中的输入端5确定为当前倍频时钟周期的输入端;该第2组输入端中的输入端5上的写请求用于写入第一分段数据5,BRAM132在端口B的输入引脚上接收到有效的写请求时,将端口B的输入引脚上收到的64比特的第一分段数据5写入到该写请求指定的存储地址所指向的存储行B1。
在第3个倍频时钟周期,时钟编号生成电路130生成第3选择信号输出给第1个4:1输入电路131A和第2个4:1输入电路131B的控制端;第1个4:1输入电路131A在控制端上接收到第3选择信号后,根据第3选择信号将4组输入端中的第3组输入端中的输入端2确定为当前倍频时钟周期的输入端;该第3组输入端中的输入端2上的写请求用于写入第一分段数据2,BRAM132在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第一分段数据2写入到该写请求指定的存储地址所指向的存储行A2;第2个4:1输入电路131B在控制端上接收到第3选择信号后,根据第3选择信号将4组输入端中的第3组输入端中的输入端6确定为当前倍频时钟周期的输入端;该第3组输入端中的输入端6上的写请求用于写入第一分段数据6,BRAM132在端口B的输入引脚上接收到有效的写请求时,将端口B的输入引脚上收到的64比特的第一分段数据6写入到该写请求指定的存储地址所指向的存储行B2。
在第4个倍频时钟周期,时钟编号生成电路130生成第4选择信号输出给第1个4:1输入电路131A和第2个4:1输入电路131B的控制端;第1个4:1输入电路131A在控制端上接收到第4选择信号后,根据第4选择信号将4组输入端中的第4组输入端中的输入端3确定为当前倍频时钟周期的输入端;该第4组输入端中的输入端3上的写请求用于写入第一分段数据3,BRAM132在端口A的输入引脚上接收到有效的写请求时,将端口A的输入引脚上收到的64比特的第一分段数据3写入到该写请求指定的存储地址所指向的存储行A3;第2个4:1输入电路131B在控制端上接收到第4选择信号后,根据第4选择信号将4组输入端中的第4组输入端中的输入端7确定为当前倍频时钟周期的输入端;该第1组输入端中的输入端7上的写请求用于写入第一分段数据7,BRAM132在端口B的输入引脚上接收到有效的写请求时,将端口B的输入引脚上收到的64比特的第一分段数据7写入到该写请求指定的存储地址所指向的存储行B3。
请参考图13,其示出了本发明另一个实施例提供的数据读取方法的流程图。该数据读取方法用于向如图11所提供的FPGA芯片的Cache中读取数据。该数据读取方法,包括:
步骤1301,Core在第一系统时钟周期中,向Cache发送读请求。
其中,读请求用于从Cache读取512比特的第二Cache行数据。
可选的,Core在第一系统时钟周期中,通过网络接口向Cache中的每个4:1输入电路发送读请求。
步骤1302,时钟编号生成电路在第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号。
步骤1303,时钟编号生成电路将生成的第i选择信号输出给4:1输入电路的控制端。
步骤1304,每个4:1输入电路根据第i选择信号将4组输入端中的第i组输入端确定为第i个倍频时钟周期的输入端。
步骤1305,每个4:1输入电路在确定出的当前倍频时钟周期的输入端后,向BRAM发送读请求。
步骤1306,BRAM在第i个倍频时钟周期,从端口的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行中读取出64比特的第二分段数据。
步骤1307,第j个解复用电路在接收到第i选择信号之后的下一个选择信号时,通过解复用电路的第i个输出端,将BRAM在第i个倍频时钟周期中读取出的64比特的第二分段数据,在第i个倍频时钟周期的下一个倍频时钟周期输出至第j组预缓存寄存器组中的第i个预缓存寄存器。
步骤1308,第j组预缓存寄存器组在第二系统时钟周期的第2个倍频时钟周期,将内部的4个预缓存寄存器所缓存的4个第二分段数据,输出至拼接寄存器。
步骤1309,拼接寄存器在第二系统时钟周期的第3个倍频时钟周期,将8个64比特的第二分段数据拼接为512比特的第二Cache行数据。
步骤1310,拼接寄存器在第三系统时钟周期将第二Cache行数据输出给Core。
综上所述,通过第j组预缓存寄存器组在第二系统时钟周期的第2个倍频时钟周期,将内部的4个预缓存寄存器所缓存的4个第二分段数据,输出至拼接寄存器,拼接寄存器在第二系统时钟周期的第3个倍频时钟周期,将8个64比特的第二分段数据拼接为512比特的第二Cache行数据,拼接寄存器在第三系统时钟周期将第二Cache行数据输出给Core;区别于背景技术中采用8个BRAM拼接出一个完整Cache行的方案,本发明实施例采用时分复用的方式使得单个BRAM在4个倍频时钟周期中实现了第二Cache行数据的读取,将多个BRAM在空间上的并行转化为单个BRAM在时间上的并行,保证在系统时钟周期不变的前提下,采用时分复用实现一个Cache行的数据的读取,从而达到了提高BRAM的资源利用率的效果。
在一个具体的例子中,Core在第一系统时钟周期中向Cache发送读请求,读请求用于从Cache读取512比特的第二Cache行数据,该第二Cache行数据包括8个64bit的第二分段数据,分别为第二分段数据0、第二分段数据1、第二分段数据2、第二分段数据3、第二分段数据4、第二分段数据5、第二分段数据6和第二分段数据7,将第二分段数据0、第二分段数据1、第二分段数据2和第二分段数据3分为一组,与第1个4:1输入电路131A对应;将第二分段数据4、第二分段数据5、第二分段数据6和第二分段数据7分为另一组,与第2个4:1输入电路131B对应。
在第一系统时钟周期的第1个倍频时钟周期中,第二分段数据0对应端口A,第二分段数据4对应端口B;在第一系统时钟周期的第2个倍频时钟周期中,第二分段数据1对应端口A,第二分段数据5对应端口B;在第一系统时钟周期的第3个倍频时钟周期中,第二分段数据2对应端口A,第二分段数据6对应端口B;在第一系统时钟周期的第4个倍频时钟周期中,第二分段数据3对应端口A,第二分段数据7对应端口B。
对于第一系统时钟周期的4个倍频时钟周期,Cache中各个部件执行的步骤如下:
在第一系统时钟周期的第1个倍频时钟周期,时钟编号生成电路130生成第1选择信号输出给第1个4:1输入电路131A和第2个4:1输入电路131B的控制端;第1个4:1输入电路131A在控制端上接收到第1选择信号后,根据第1选择信号将4组输入端中的第1组输入端中的输入端0确定为当前倍频时钟周期的输入端;该第1组输入端中的输入端0上的读请求用于读取第二分段数据0,BRAM132在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行A0中读取出64比特的第二分段数据0;第2个4:1输入电路131B在控制端上接收到第1选择信号后,根据第1选择信号将4组输入端中的第1组输入端中的输入端4确定为当前倍频时钟周期的输入端;该第1组输入端中的输入端4上的读请求用于读取第二分段数据4,BRAM132在端口B的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行B0中读取出64比特的第二分段数据4。
在第一系统时钟周期的第2个倍频时钟周期,时钟编号生成电路130生成第2选择信号输出给第1个4:1输入电路131A和第2个4:1输入电路131B的控制端;第1个4:1输入电路131A在控制端上接收到第2选择信号后,根据第2选择信号将4组输入端中的第2组输入端中的输入端1确定为当前倍频时钟周期的输入端;该第2组输入端中的输入端1上的读请求用于读取第二分段数据1,BRAM132在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行A1中读取出64比特的第二分段数据1;第1个解复用电路134A在接收到时钟编号生成电路130输出的第2选择信号时,通过第1个解复用电路134A的输出端0,将BRAM132在第一系统时钟周期中的第1个倍频时钟周期中读取出的64比特的第二分段数据0,在第一系统时钟周期中的第2个倍频时钟周期输出至第1组预缓存寄存器组135A中的预缓存寄存器0;预缓存寄存器0缓存该64比特的第二分段数据0;第2个4:1输入电路131B在控制端上接收到第2选择信号后,根据第2选择信号将4组输入端中的第2组输入端中的输入端5确定为当前倍频时钟周期的输入端;该第2组输入端中的输入端5上的读请求用于读取第二分段数据5,BRBM132在端口B的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行B1中读取出64比特的第二分段数据5;第2个解复用电路134B在接收到时钟编号生成电路130输出的第2选择信号时,通过第2个解复用电路134B的输出端4,将BRBM132在第一系统时钟周期中的第1个倍频时钟周期中读取出的64比特的第二分段数据4,在第一系统时钟周期中的第2个倍频时钟周期输出至第2组预缓存寄存器组135B中的预缓存寄存器4;预缓存寄存器4缓存该64比特的第二分段数据4。
在第一系统时钟周期的第3个倍频时钟周期,时钟编号生成电路130生成第3选择信号输出给第1个4:1输入电路131A和第2个4:1输入电路131B的控制端;第1个4:1输入电路131A在控制端上接收到第3选择信号后,根据第3选择信号将4组输入端中的第3组输入端中的输入端2确定为当前倍频时钟周期的输入端;该第3组输入端中的输入端2上的读请求用于读取第二分段数据2,BRAM132在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行A2中读取出64比特的第二分段数据2;第1个解复用电路134A在接收到时钟编号生成电路130输出的第3选择信号时,通过第1个解复用电路134A的输出端1,将BRAM132在第一系统时钟周期中的第2个倍频时钟周期中读取出的64比特的第二分段数据1,在第一系统时钟周期中的第3个倍频时钟周期输出至第1组预缓存寄存器组135A中的预缓存寄存器1;预缓存寄存器1缓存该64比特的第二分段数据1;第2个4:1输入电路131B在控制端上接收到第3选择信号后,根据第3选择信号将4组输入端中的第3组输入端中的输入端6确定为当前倍频时钟周期的输入端;该第3组输入端中的输入端6上的读请求用于读取第二分段数据6,BRBM132在端口B的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行B2中读取出64比特的第二分段数据6;第2个解复用电路134B在接收到时钟编号生成电路130输出的第3选择信号时,通过第2个解复用电路134B的输出端5,将BRBM132在第一系统时钟周期中的第2个倍频时钟周期中读取出的64比特的第二分段数据5,在第一系统时钟周期中的第3个倍频时钟周期输出至第2组预缓存寄存器组135B中的预缓存寄存器5;预缓存寄存器5缓存该64比特的第二分段数据5。
在第一系统时钟周期的第4个倍频时钟周期,时钟编号生成电路130生成第4选择信号输出给第1个4:1输入电路131A和第2个4:1输入电路131B的控制端;第1个4:1输入电路131A在控制端上接收到第4选择信号后,根据第4选择信号将4组输入端中的第4组输入端中的输入端3确定为当前倍频时钟周期的输入端;该第4组输入端中的输入端3上的读请求用于读取第二分段数据3,BRAM132在端口A的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行A2中读取出64比特的第二分段数据3;第1个解复用电路134A在接收到时钟编号生成电路130输出的第4选择信号时,通过第1个解复用电路134A的输出端2,将BRAM132在第一系统时钟周期中的第3个倍频时钟周期中读取出的64比特的第二分段数据2,在第一系统时钟周期中的第4个倍频时钟周期输出至第1组预缓存寄存器组135A中的预缓存寄存器2;预缓存寄存器2缓存该64比特的第二分段数据2;第2个4:1输入电路131B在控制端上接收到第4选择信号后,根据第4选择信号将4组输入端中的第4组输入端中的输入端7确定为当前倍频时钟周期的输入端;该第4组输入端中的输入端7上的读请求用于读取第二分段数据7,BRBM132在端口B的输入引脚上接收到有效的读请求时,从读请求指定的存储地址所指向的存储行B3中读取出64比特的第二分段数据7;第2个解复用电路134B在接收到时钟编号生成电路130输出的第4选择信号时,通过第2个解复用电路134B的输出端6,将BRBM132在第一系统时钟周期中的第3个倍频时钟周期中读取出的64比特的第二分段数据6,在第一系统时钟周期中的第4个倍频时钟周期输出至第2组预缓存寄存器组135B中的预缓存寄存器6;预缓存寄存器6缓存该64比特的第二分段数据6。
在第二系统时钟周期的第1个倍频时钟周期,第1个解复用电路134A在接收到时钟编号生成电路130输出的第1选择信号时,通过第1个解复用电路134A的输出端3,将BRAM132在第一系统时钟周期中的第4个倍频时钟周期中读取出的64比特的第二分段数据3,在第二系统时钟周期中的第1个倍频时钟周期输出至第1组预缓存寄存器组135A中的预缓存寄存器3;预缓存寄存器3缓存该64比特的第二分段数据3;第2个解复用电路134B在接收到时钟编号生成电路130输出的第1选择信号时,通过第2个解复用电路134B的输出端7,将BRBM132在第一系统时钟周期中的第4个倍频时钟周期中读取出的64比特的第二分段数据7,在第二系统时钟周期中的第1个倍频时钟周期输出至第2组预缓存寄存器组135B中的预缓存寄存器7;预缓存寄存器7缓存该64比特的第二分段数据7。
在第二系统时钟周期的第2个倍频时钟周期,第1组预缓存寄存器组135A将内部的4个预缓存寄存器所缓存的4个第二分段数据,即第二分段数据0至第二分段数据3,输出至拼接寄存器136;第2组预缓存寄存器组135B将内部的4个预缓存寄存器所缓存的4个第二分段数据,即第二分段数据4至第二分段数据7,输出至拼接寄存器136。
在第二系统时钟周期的第3个倍频时钟周期,拼接寄存器136将第1组预缓存寄存器组135A输出的4个第二分段数据和第2组预缓存寄存器组135B输出的4个第二分段数据,即8个64比特的第二分段数据拼接为512比特的第二Cache行数据。
在第三系统时钟周期,拼接寄存器将第二Cache行数据输出给Core60。
请参考图14,其示出了本发明另一个实施例提供的Cache的电路结构图。本实施例是基于图11更为优选的实施例。
该Cache包括:时钟编号生成电路1、倍频时钟生成电路、2个4:1输入电路2、具有双端口的BRAM、2个解复用电路3、2组预缓存寄存器组4、拼接寄存器5和系统时钟生成电路;
时钟编号生成电路1的输入端与倍频时钟生成电路相连;时钟编号生成电路1的输出端与2个4:1输入电路2各自对应的控制端一一对应相连,时钟编号生成电路1的输出端还与2个解复用电路3各自对应的控制端一一对应相连。
每个4:1输入电路2的4组输入端通过网络接口与Core相连,每个4:1输入电路2的输出端与BRAM中对应的一个端口的输入端相连。
BRAM中每个端口的输出端与对应的一个解复用电路3的输入端相连。
每个解复用电路3的4个输出端分别与一组预缓存寄存器组4中的4个预缓存寄存器各自对应的输入端一一对应相连。
每组预缓存寄存器组4中的4个预缓存寄存器的输出端与拼接寄存器5的输入端相连;拼接寄存器5的输出端通过网络接口与Core相连。拼接寄存器5的控制端与系统时钟生成电路相连。
倍频时钟生成电路分别与BRAM的控制端和预缓存寄存器的控制端相连。
时钟编号生成电路1中,包括两个D触发器,分别为第1个触发器和第2个触发器,第1个触发器和第2个触发器的输入端分别与倍频时钟生成电路相连,第1个D触发器的输出端与2个4:1输入电路2各自对应的使能输入端,即EN_0至EN_7一一对应相连,第2个触发器的输出端与2个解复用电路3各自对应的控制端一一对应相连。
2个4:1输入电路2中,包括第1个4:1输入电路2和第2个4:1输入电路2。每个4:1输入电路2包括4组输入端和1组输出端,每个4:1输入电路2的每组输入端包括数据输入端、地址输入端、使能输入端和请求输入端,每个4:1输入电路2的输出端包括数据输出端、地址输出端、使能输出端和请求输出端。
第1个4:1输入电路2的4组输入端,分别为第1组输入端、第2组输入端、第3组输入端和第4组输入端;第1组输入端包括:数据输入端DataIn_0、地址输入端Addr_0、使能输入端EN_0、请求输入端We_0;第2组输入端包括:数据输入端DataIn_1、地址输入端Addr_1、使能输入端EN_1、请求输入端We_1;第3组输入端包括:数据输入端DataIn_2、地址输入端Addr_2、使能输入端EN_2、请求输入端We_2;第4组输入端包括:数据输入端DataIn_3、地址输入端Addr_3、使能输入端EN_3、请求输入端We_3。第2个4:1输入电路2的4组输入端,分别为第5组输入端、第6组输入端、第7组输入端和第8组输入端;第5组输入端包括:数据输入端DataIn_4、地址输入端Addr_4、使能输入端EN_4、请求输入端We_4;第6组输入端包括:数据输入端DataIn_5、地址输入端Addr_5、使能输入端EN_5、请求输入端We_5;第7组输入端包括:数据输入端DataIn_6、地址输入端Addr_6、使能输入端EN_6、请求输入端We_6;第8组输入端包括:数据输入端DataIn_7、地址输入端Addr_7、使能输入端EN_7、请求输入端We_7。
BRAM具有双端口,即端口A和端口B;第1个4:1输入电路2的数据输出端与BRAM的端口A中的数据引脚Din0相连;第1个4:1输入电路2的地址输出端与BRAM的端口A中的地址引脚Addr0相连;第1个4:1输入电路2的使能输出端与BRAM的端口A中的使能引脚Control0相连;第1个4:1输入电路2的请求输出端与BRAM的端口A中的请求引脚Clk0相连。第2个4:1输入电路2的数据输出端与BRAM的端口B中的数据引脚Din1相连;第2个4:1输入电路2的地址输出端与BRAM的端口B中的地址引脚Addr1相连;第2个4:1输入电路2的使能输出端与BRAM的端口B中的使能引脚Control1相连;第2个4:1输入电路2的请求输出端与BRAM的端口B中的请求引脚Clk1相连。
2个解复用电路3中,包括第1个解复用电路3和第2个解复用电路3,每个解复用电路3包括1个输入端和4个输出端。其中,第1个解复用电路3的输入端与BRAM中的第1个端口的输出引脚Dout0相连,第1个解复用电路3的4个输出端与第1组预缓存寄存器组4的4个预缓存寄存器各自对应的输入端D一一对应相连;第2个解复用电路3的输入端与BRAM中的第2个端口的输出引脚Dout1相连,第2个解复用电路3的4个输出端与第2组预缓存寄存器组4的4个预缓存寄存器各自对应的输入端D一一对应相连。
2组预缓存寄存器组4中,每组预缓存寄存器组4包括4个预缓存寄存器,即2组预缓存寄存器组4中8个预缓存寄存器的输出端Q与拼接寄存器5的输入端D相连。
拼接寄存器5中,拼接寄存器5的输出端Q通过网络接口与Core相连。
需要说明的一点是,步骤1206可替代实现为步骤1206a和步骤1206b,如图15所示:
步骤1206a,BRAM在第i个倍频时钟周期,当第j个端口的使能引脚为第一电平且请求引脚为第一电平时,确定接收到有效的写请求。
可选的,使能引脚包括第一电平或第二电平,使能引脚的第一电平用于表示接收到的请求为有效的请求,使能引脚的第二电平用于表示接收到的请求为无效的请求;请求引脚包括第一电平或第二电平,请求引脚的第一电平用于表示接收到的请求为写请求,请求引脚的第二电平用于表示接收到的请求为读请求;示意性的,第一电平为高电平,第二电平为低电平。
步骤1206b,BRAM将第j个端口的数据引脚上所接收到的64比特的第一分段数据,写入第j个端口的地址引脚上所接收到的存储地址所指向的存储行。
可选的,当BRAM的端口A的数据引脚接收64比特的第一分段数据时,对应的,端口A的地址引脚接收与64比特的第一分段数据对应的存储地址所指向的存储行,BRAM将第j个端口的数据引脚上所接收到的64比特的第一分段数据,写入对应的存储地址所指向的存储行;当BRAM的端口B的数据引脚接收64比特的第一分段数据时,对应的,端口B的地址引脚接收与64比特的第一分段数据对应的存储地址所指向的存储行,BRAM将第j个端口的数据引脚上所接收到的64比特的第一分段数据,写入对应的存储地址所指向的存储行。
需要说明的另一点是,步骤1306可替代实现为步骤1306a和步骤1306b,如图16所示:
步骤1306a,BRAM在第i个倍频时钟周期,当第j个端口的使能引脚为第一电平且请求引脚为第二电平时,确定接收到有效的读请求。
步骤1306b,BRAM从第j个端口的地址引脚上所接收到的存储地址所指向的存储行中,读取出64比特的第二分段数据。
可选的,当BRAM的端口A的数据引脚接收64比特的第二分段数据时,对应的,端口A的地址引脚接收与64比特的第二分段数据对应的存储地址所指向的存储行,BRAM从对应的存储地址所指向的存储行中读取出64比特的第二分段数据;当BRAM的端口B的数据引脚接收64比特的第二分段数据时,对应的,端口B的地址引脚接收与64比特的第二分段数据对应的存储地址所指向的存储行,BRAM从对应的存储地址所指向的存储行中读取出64比特的第二分段数据。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的数据写入方法或数据读取方法中全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (11)
1.一种数据访问系统,其特征在于,所述数据访问系统包括:系统时钟生成电路、倍频时钟生成电路、处理器核Core和缓存Cache;
所述系统时钟生成电路分别与所述Core和所述Cache相连,所述倍频时钟生成电路与所述Cache相连;
所述系统时钟生成电路,用于产生系统时钟周期;
所述倍频时钟生成电路,用于产生倍频时钟周期,每个所述系统时钟周期中包括n个所述倍频时钟周期,n为每个所述系统时钟周期中包括的所述倍频时钟周期的个数;
所述Core和所述Cache采用网络接口相连,所述网络接口的数据传输位宽为m1比特,所述Cache包含至少一个具有x个端口的随机存储器模块,所述随机存储器模块包括多个位宽为m2比特的存储行,其中的x*n个存储行组成所述Cache的一个Cache行,其中x*n*m2=m1;所述Core,用于在第一系统时钟周期中向所述Cache发送写请求或读请求,所述写请求用于向所述Cache写入m1比特的第一Cache行数据,所述读请求用于从所述Cache中读取m1比特的第二Cache行数据;
所述Cache,用于在接收到所述写请求时,在所述第一系统时钟周期内的每个所述倍频时钟周期通过所述x个端口写入x个m2比特的第一分段数据;所述Cache还用于在接收到所述读请求时,在所述第一系统时钟周期内的每个所述倍频时钟周期通过所述x个端口读取x个m2比特的第二分段数据,并将所述第一系统时钟周期读取到的x*n个所述第二分段数据拼接为m1比特的所述第二Cache行数据,将m1比特的所述第二Cache行数据输出给所述Core;
其中,x为大于0的整数,n为大于1的整数,m1、m2均为整数且m1是m2的整数倍。
2.根据权利要求1所述的数据访问系统,其特征在于,所述Cache包括:时钟编号生成电路、x个n:1输入电路和具有x个端口的所述随机存储器模块;
所述时钟编号生成电路的输入端与所述倍频时钟生成电路相连;所述时钟编号生成电路的输出端与所述x个n:1输入电路各自对应的控制端相连;
每个所述n:1输入电路的n组输入端通过所述网络接口与所述Core相连;第j个所述n:1输入电路的输出端与所述随机存储器模块中的第j个端口的输入引脚相连,1≤j≤x;
所述时钟编号生成电路,用于在所述第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号输出给所述x个n:1输入电路的控制端,i为整数且1≤i≤n;
每个所述n:1输入电路,用于根据所述第i选择信号,将所述n组输入端中的第i组输入端确定为所述第i个倍频时钟周期的输入端;
所述随机存储器模块,用于在所述第i个倍频时钟周期,从所述第j个端口的输入引脚上接收到有效的所述写请求时,将所述第j个端口的输入引脚上接收到的m2比特的第一分段数据写入所述写请求指定的存储地址所指向的存储行。
3.根据权利要求2所述的数据访问系统,其特征在于,
每个所述n:1输入电路的每一组输入端均包括:数据输入端、地址输入端、使能输入端、请求输入端;每个所述n:1输入电路的输出端包括:数据输出端、地址输出端、使能输出端和请求输出端;
第j个所述n:1输入电路的所述数据输出端与所述随机存储器模块的第j个端口中的数据引脚相连;第j个所述n:1输入电路的所述地址输出端与所述随机存储器模块的第j个端口中的地址引脚相连;第j个所述n:1输入电路的所述使能输出端与所述随机存储器模块的第j个端口中的使能引脚相连;第j个所述n:1输入电路的所述请求输出端与所述随机存储器模块的第j个端口中的请求引脚相连;
所述随机存储器模块,还用于在所述第i个倍频时钟周期,当所述第j个端口的所述使能引脚为第一电平且所述请求引脚为所述第一电平时,确定接收到有效的所述写请求;将所述第j个端口的所述数据引脚上所接收到的m2比特的第一分段数据,写入所述第j个端口的所述地址引脚上所接收到的存储地址所指向的存储行。
4.根据权利要求2所述的数据访问系统,其特征在于,所述Cache还包括:x个解复用电路、x组预缓存寄存器组和拼接寄存器,每组所述预缓存寄存器组包括n个预缓存寄存器;
所述时钟编号生成电路的输出端还与所述x个解复用电路各自对应的控制端相连;
第j个所述解复用电路的输入端与所述随机存储器模块中的第j个端口的输出引脚相连;第j个所述解复用电路的n个输出端与第j组所述预缓存寄存器组的n个所述预缓存寄存器各自对应的输入端一一对应相连;
每组所述预缓存寄存器组中的n个所述预缓存寄存器的输出端与所述拼接寄存器的输入端相连;
所述拼接寄存器的控制端与所述系统时钟生成电路相连,所述拼接寄存器的输出端通过所述网络接口与所述Core相连;
所述随机存储器模块,还用于在所述第一系统时钟周期中的第i个倍频时钟周期,从所述第j个端口的输入引脚上接收到有效的所述读请求时,从所述读请求指定的存储地址所指向的存储行中读取出m2比特的第二分段数据;
第j个所述解复用电路,用于在接收到所述第i选择信号之后的下一个选择信号时,通过所述解复用电路的第i个输出端,将所述随机存储器模块在所述第i个倍频时钟周期中读取出的m2比特的所述第二分段数据,在所述第i个倍频时钟周期的下一个倍频时钟周期输出至第j组所述预缓存寄存器组中的第i个预缓存寄存器;
所述第j组所述预缓存寄存器组,用于在第二系统时钟周期的第2个倍频时钟周期,将内部的n个所述预缓存寄存器所缓存的n个所述第二分段数据,输出至所述拼接寄存器;
所述拼接寄存器,用于在所述第二系统时钟周期的第3个倍频时钟周期将x*n个m2比特的所述第二分段数据拼接为m1比特的所述第二Cache行数据;在第三系统时钟周期将所述第二Cache行数据输出给所述Core。
5.根据权利要求4所述的数据访问系统,其特征在于,
每个所述n:1输入电路的每一组输入端均包括:数据输入端、地址输入端、使能输入端、请求输入端;每个所述n:1输入电路的输出端包括:数据输出端、地址输出端、使能输出端和请求输出端;
第j个所述n:1输入电路的所述数据输出端与所述随机存储器模块的第j个端口中的数据引脚相连;第j个所述n:1输入电路的所述地址输出端与所述随机存储器模块的第j个端口中的地址引脚相连;第j个所述n:1输入电路的所述使能输出端与所述随机存储器模块的第j个端口中的使能引脚相连;第j个所述n:1输入电路的所述请求输出端与所述随机存储器模块的第j个端口中的请求引脚相连;
所述随机存储器模块,还用于当所述第j个端口的所述使能引脚为第一电平且所述请求引脚为第二电平时,确定接收到有效的所述读请求;从所述第j个端口的所述地址引脚上所接收到的存储地址所指向的存储行中,读取出m2比特的所述第二分段数据。
6.一种数据写入方法,其特征在于,数据访问系统包括:系统时钟生成电路、倍频时钟生成电路、处理器核Core和缓存Cache,所述系统时钟生成电路分别与所述Core和所述Cache相连,所述倍频时钟生成电路与所述Cache相连,所述系统时钟生成电路,用于产生系统时钟周期,所述倍频时钟生成电路,用于产生倍频时钟周期,每个所述系统时钟周期中包括n个所述倍频时钟周期,所述Core和所述Cache采用网络接口相连,所述网络接口的数据传输位宽为m1比特,所述Cache包含至少一个具有x个端口的随机存储器模块,所述随机存储器模块包括多个位宽为m2比特的存储行,其中的x*n个存储行组成所述Cache的一个Cache行,其中x*n*m2=m1,所述方法包括:
所述Core在第一系统时钟周期中,向所述Cache发送写请求;所述写请求用于向所述Cache写入m1比特的第一Cache行数据;
所述Cache在接收到所述写请求时,在所述第一系统时钟周期内的每个所述倍频时钟周期通过所述x个端口写入x个m2比特的第一分段数据;
其中,x为大于0的整数,n为每个所述系统时钟周期中包括的所述倍频时钟周期的个数,且n为大于1的整数,m1、m2均为整数且m1是m2的整数倍。
7.根据权利要求6所述的方法,其特征在于,所述Cache包括:时钟编号生成电路、x个n:1输入电路和具有x个端口的所述随机存储器模块;所述时钟编号生成电路的输入端与所述倍频时钟生成电路相连;所述时钟编号生成电路的输出端与所述x个n:1输入电路各自对应的控制端相连;每个所述n:1输入电路的n组输入端通过所述网络接口与所述Core相连;第j个所述n:1输入电路的输出端与所述随机存储器模块中的第j个端口的输入引脚相连,1≤j≤x;
所述Cache在接收到所述写请求时,在所述第一系统时钟周期内的每个所述倍频时钟周期中通过所述x个端口写入x个m2比特的第一分段数据,包括:
所述时钟编号生成电路在所述第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号并输出给所述n:1输入电路的控制端;
每个所述n:1输入电路根据所述第i选择信号将所述n组输入端中的第i组输入端确定为当前倍频时钟周期的输入端;
所述随机存储器模块在所述第i个倍频时钟周期,从所述第j个端口的输入引脚上接收到有效的所述写请求时,将所述第j个端口的输入引脚上接收到的m2比特的第一分段数据写入所述写请求指定的存储地址所指向的存储行。
8.根据权利要求7所述的方法,其特征在于,每个所述n:1输入电路的每一组输入端均包括:数据输入端、地址输入端、使能输入端、请求输入端;每个所述n:1输入电路的输出端包括:数据输出端、地址输出端、使能输出端和请求输出端;第j个所述n:1输入电路的所述数据输出端与所述随机存储器模块的第j个端口中的数据引脚相连;第j个所述n:1输入电路的所述地址输出端与所述随机存储器模块的第j个端口中的地址引脚相连;第j个所述n:1输入电路的所述使能输出端与所述随机存储器模块的第j个端口中的使能引脚相连;第j个所述n:1输入电路的所述请求输出端与所述随机存储器模块的第j个端口中的请求引脚相连;
所述随机存储器模块在所述第i个倍频时钟周期,从所述第j个端口的输入引脚上接收到有效的所述写请求时,将所述第j个端口的输入引脚上接收到的m2比特的第一分段数据写入所述写请求指定的存储地址所指向的存储行,包括:
所述随机存储器模块在所述第i个倍频时钟周期,当所述第j个端口的所述使能引脚为第一电平且所述请求引脚为所述第一电平时,确定接收到有效的所述写请求;
所述随机存储器模块将所述第j个端口的所述数据引脚上所接收到的m2比特的所述第一分段数据,写入所述第j个端口的所述地址引脚上所接收到的存储地址所指向的存储行。
9.一种数据读取方法,其特征在于,数据访问系统包括:系统时钟生成电路、倍频时钟生成电路、处理器核Core和缓存Cache,所述系统时钟生成电路分别与所述Core和所述Cache相连,所述倍频时钟生成电路与所述Cache相连,所述系统时钟生成电路,用于产生系统时钟周期,所述倍频时钟生成电路,用于产生倍频时钟周期,每个所述系统时钟周期中包括n个所述倍频时钟周期,所述Core和所述Cache采用网络接口相连,所述网络接口的数据传输位宽为m1比特,所述Cache包含至少一个具有x个端口的随机存储器模块,所述随机存储器模块包括多个位宽为m2比特的存储行,其中的x*n个存储行组成所述Cache的一个Cache行,其中x*n*m2=m1,所述方法包括:
所述Core在第一系统时钟周期中,向所述Cache发送读请求;所述读请求用于从所述Cache读取m1比特的第二Cache行数据;
所述Cache在接收到所述读请求时,在所述第一系统时钟周期内的每个所述倍频时钟周期通过所述x个端口读取x个m2比特的第二分段数据;将所述第一系统时钟周期读取到的x*n个所述第二分段数据拼接为m1比特的所述第二Cache行数据;将m1比特的所述第二Cache行数据输出给所述Core;
其中,x为大于0的整数,n为每个所述系统时钟周期中包括的所述倍频时钟周期的个数,且n为大于1的整数,m1、m2均为整数且m1是m2的整数倍。
10.根据权利要求9所述的方法,其特征在于,所述Cache包括:时钟编号生成电路、x个n:1输入电路、x个解复用电路、x组预缓存寄存器组和拼接寄存器,每组所述预缓存寄存器组包括n个预缓存寄存器;所述时钟编号生成电路的输出端还与所述x个解复用电路各自对应的控制端相连;第j个所述解复用电路的输入端与所述随机存储器模块中的第j个端口的输出引脚相连;第j个所述解复用电路的n个输出端与第j组所述预缓存寄存器组的n个所述预缓存寄存器各自对应的输入端一一对应相连;每组所述预缓存寄存器组中的n个所述预缓存寄存器的输出端与所述拼接寄存器的输入端相连;所述拼接寄存器的控制端与所述系统时钟生成电路相连,所述拼接寄存器的输出端通过所述网络接口与所述Core相连;
所述Cache在接收到所述读请求时,在所述第一系统时钟周期内的每个所述倍频时钟周期通过所述x个端口读取x个m2比特的第二分段数据;将所述第一系统时钟周期读取到的x*n个所述第二分段数据拼接为m1比特的所述第二Cache行数据;将m1比特的所述第二Cache行数据输出给所述Core,包括:
所述时钟编号生成电路在所述第一系统时钟周期中的第i个倍频时钟周期,生成第i选择信号输出给所述n:1输入电路的控制端;
每个所述n:1输入电路根据所述第i选择信号将n组输入端中的第i组输入端确定为所述第i个倍频时钟周期的输入端;
所述随机存储器模块在所述第i个倍频时钟周期,从所述第j个端口的输入引脚上接收到有效的所述读请求时,从所述读请求指定的存储地址所指向的存储行中读取出m2比特的第二分段数据;
第j个所述解复用电路在接收到所述第i选择信号之后的下一个选择信号时,通过所述解复用电路的第i个输出端,将所述随机存储器模块在所述第i个倍频时钟周期中读取出的m2比特的所述第二分段数据,在所述第i个倍频时钟周期的下一个倍频时钟周期输出至第j组所述预缓存寄存器组中的第i个预缓存寄存器;
所述第j组所述预缓存寄存器组在第二系统时钟周期的第2个倍频时钟周期,将内部的n个所述预缓存寄存器所缓存的n个所述第二分段数据,输出至所述拼接寄存器;
所述拼接寄存器在所述第二系统时钟周期的第3个倍频时钟周期,将x*n个m2比特的所述第二分段数据拼接为m1比特的所述第二Cache行数据;在第三系统时钟周期将所述第二Cache行数据输出给所述Core。
11.根据权利要求9所述的方法,其特征在于,所述Cache包括:x个n:1输入电路;每个所述n:1输入电路的每一组输入端均包括:数据输入端、地址输入端、使能输入端、请求输入端;每个所述n:1输入电路的输出端包括:数据输出端、地址输出端、使能输出端和请求输出端;第j个所述n:1输入电路的所述数据输出端与所述随机存储器模块的第j个端口中的数据引脚相连;第j个所述n:1输入电路的所述地址输出端与所述随机存储器模块的第j个端口中的地址引脚相连;第j个所述n:1输入电路的所述使能输出端与所述随机存储器模块的第j个端口中的使能引脚相连;第j个所述n:1输入电路的所述请求输出端与所述随机存储器模块的第j个端口中的请求引脚相连;
所述随机存储器模块在所述第一系统时钟周期中的第i个倍频时钟周期,从所述第j个端口的输入引脚上接收到有效的所述读请求时,从所述读请求指定的存储地址所指向的存储行中读取出m2比特的第二分段数据,包括:
所述随机存储器模块在所述第i个倍频时钟周期,当所述第j个端口的所述使能引脚为第一电平且所述请求引脚为第二电平时,确定接收到有效的所述读请求;
所述随机存储器模块从所述第j个端口的所述地址引脚上所接收到的存储地址所指向的存储行中,读取出m2比特的所述第二分段数据。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610958714.2A CN108010554B (zh) | 2016-10-27 | 2016-10-27 | 一种数据访问系统、数据写入方法及数据读取方法 |
PCT/CN2017/103055 WO2018076978A1 (zh) | 2016-10-27 | 2017-09-23 | 一种数据访问系统、数据写入方法及数据读取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610958714.2A CN108010554B (zh) | 2016-10-27 | 2016-10-27 | 一种数据访问系统、数据写入方法及数据读取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108010554A CN108010554A (zh) | 2018-05-08 |
CN108010554B true CN108010554B (zh) | 2020-09-29 |
Family
ID=62024395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610958714.2A Active CN108010554B (zh) | 2016-10-27 | 2016-10-27 | 一种数据访问系统、数据写入方法及数据读取方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN108010554B (zh) |
WO (1) | WO2018076978A1 (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1630815A1 (en) * | 2004-08-24 | 2006-03-01 | Infineon Technologies AG | Memory circuit with supply voltage flexibility and supply voltage adapted performance |
CN101110262A (zh) * | 2007-01-22 | 2008-01-23 | 北京中星微电子有限公司 | 一种读取内存中数据的方法和系统 |
CN101166151A (zh) * | 2007-09-20 | 2008-04-23 | 北大方正集团有限公司 | 跨时钟域不同位宽数据传递的方法及装置 |
CN101706763A (zh) * | 2009-11-20 | 2010-05-12 | 中兴通讯股份有限公司 | 一种串行和解串行的方法及装置 |
CN105868125A (zh) * | 2015-01-23 | 2016-08-17 | 澜起科技(上海)有限公司 | 缓冲存储器及用于控制内部存储器数据访问的装置和方法 |
-
2016
- 2016-10-27 CN CN201610958714.2A patent/CN108010554B/zh active Active
-
2017
- 2017-09-23 WO PCT/CN2017/103055 patent/WO2018076978A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1630815A1 (en) * | 2004-08-24 | 2006-03-01 | Infineon Technologies AG | Memory circuit with supply voltage flexibility and supply voltage adapted performance |
CN101110262A (zh) * | 2007-01-22 | 2008-01-23 | 北京中星微电子有限公司 | 一种读取内存中数据的方法和系统 |
CN101166151A (zh) * | 2007-09-20 | 2008-04-23 | 北大方正集团有限公司 | 跨时钟域不同位宽数据传递的方法及装置 |
CN101706763A (zh) * | 2009-11-20 | 2010-05-12 | 中兴通讯股份有限公司 | 一种串行和解串行的方法及装置 |
CN105868125A (zh) * | 2015-01-23 | 2016-08-17 | 澜起科技(上海)有限公司 | 缓冲存储器及用于控制内部存储器数据访问的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108010554A (zh) | 2018-05-08 |
WO2018076978A1 (zh) | 2018-05-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107015928B (zh) | 用以切换多个接口的系统及其方法及用以切换总线的系统 | |
JP5232019B2 (ja) | 複数のプロセッサコア用の装置、システム、及び方法 | |
US7710789B2 (en) | Synchronous address and data multiplexed mode for SRAM | |
US20170214405A1 (en) | Clock Circuit and Clock Signal Transmission Method Thereof | |
US20140169111A1 (en) | Device including a plurality of memory banks and a pipeline control circuit configured to execute a command on the plurality of memory banks | |
CN101609442B (zh) | 一种接口自适应的方法及其装置、系统 | |
CN110633229A (zh) | 用于高带宽存储器通道的dimm | |
US20060098519A1 (en) | Semiconductor memory devices having a dual port mode and methods of operating the same | |
CN103714038A (zh) | 一种数据处理方法和装置 | |
JP2021185497A (ja) | 再構成可能なサーバー及びそれを有するサーバーラック | |
US9292640B1 (en) | Method and system for dynamic selection of a memory read port | |
US7761668B2 (en) | Processor architecture having multi-ported memory | |
JP2021507363A (ja) | シリアル通信装置 | |
CN108270877B (zh) | 分布式网络节点数据共享系统 | |
BR102013022935A2 (pt) | Dispositivo de memória flash serial de múltiplos fluxos de dados | |
CN104407992B (zh) | 一种基于双端口寄存器阵列的四端口存储器 | |
CN104598404B (zh) | 计算设备扩展方法和装置、以及可扩展的计算系统 | |
JP5643896B2 (ja) | デイジーチェーン接続されたデバイスのための高速インターフェイス | |
KR100840030B1 (ko) | 프로그래머블 논리 회로 | |
CN108010554B (zh) | 一种数据访问系统、数据写入方法及数据读取方法 | |
CN116457751A (zh) | 一种写数据通路结构和芯片 | |
KR101404844B1 (ko) | 듀얼 포트 메모리 및 그 방법 | |
US20210133107A1 (en) | Programmable device configuration memory system | |
CN107293318B (zh) | 一种可配位宽的嵌入式存储器 | |
KR20160109733A (ko) | 다수의 클라이언트 데이터를 처리하는 저장 장치 및 방법 |
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 |