CN115794692A - 存取内存的电子装置及数据写入方法 - Google Patents
存取内存的电子装置及数据写入方法 Download PDFInfo
- Publication number
- CN115794692A CN115794692A CN202111056703.2A CN202111056703A CN115794692A CN 115794692 A CN115794692 A CN 115794692A CN 202111056703 A CN202111056703 A CN 202111056703A CN 115794692 A CN115794692 A CN 115794692A
- Authority
- CN
- China
- Prior art keywords
- memory
- address
- bus
- write
- target value
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/109—Address translation for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/0292—User address space allocation, e.g. contiguous or non contiguous base addressing using tables or multilevel address translation means
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0879—Burst mode
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
- G06F2212/1024—Latency reduction
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1028—Power efficiency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/65—Details of virtual memory and virtual address translation
- G06F2212/657—Virtual address space management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Bus Control (AREA)
- Debugging And Monitoring (AREA)
- Credit Cards Or The Like (AREA)
- Communication Control (AREA)
Abstract
本申请公开一种存取内存的电子装置及数据写入方法。电子装置包含处理单元、总线及内存控制器。处理单元包含总线接口控制电路,该处理单元根据内存存取指令通过该总线接口控制电路产生第一写入指令。该内存存取指令包含第一内存地址及目标值,而该第一写入指令包含该第一内存地址及该目标值。总线耦接该总线接口控制电路,用来根据该第一写入指令产生第二写入指令。该第二写入指令包含第二内存地址及该目标值。内存控制器耦接该总线,用来根据该第二内存地址将该目标值写入该内存。
Description
技术领域
本发明申请是关于电子装置,尤其是关于存取内存的电子装置及数据写入方法。
背景技术
C语言中的memset函数(请参阅:https://github.com/gcc-mirror/gcc/blob/master/libgcc/memset.c)主要是中央处理单元(central processing unit,CPU)用来对某块内存进行统一设定的情况,例如清除一块内存(例如,对该块内存全部写入数值0)。
通常的CPU为实现memset函数,会使用如下方式:储存固定的数值到内存地址,并重复执行,直到所需的设定的数量达到为止。这种方式会大量消耗CPU的工作时间来完成数据搬移,即使是写相同的数据,仍然需要CPU反复执行多条代码(code)(会占用不少内存或者程序空间),才能完成。在没有丛发写入(burst write)或者CPU的丛发写入长度(burstwrite length)有限的情况下,系统花费时间更多。
在C语言中,与memset函数类似的函数还有strset函数及strnset函数。此外,在其他的语言中(例如Python、TCL等)也有相对应的函数,CPU或系统执行这些函数时也都遭遇上述的问题。
发明内容
鉴于现有技术的不足,本发明的一目的在于提供一种电子装置及数据写入方法,以改善现有技术的不足。
本发明的一实施例提供一种存取内存的电子装置,包含处理单元、总线及内存控制器。处理单元包含总线接口控制电路,该处理单元根据内存存取指令通过该总线接口控制电路产生第一写入指令。该内存存取指令包含第一内存地址及目标值,而该第一写入指令包含该第一内存地址及该目标值。总线耦接该总线接口控制电路,用来根据该第一写入指令产生第二写入指令。该第二写入指令包含第二内存地址及该目标值。内存控制器耦接该总线,用来根据该第二内存地址将该目标值写入该内存。
本发明的另一实施例提供一种数据写入方法,用来对内存写入数据,包含:根据内存存取指令通过总线接口控制电路产生第一写入指令,其中该内存存取指令包含第一内存地址及目标值,该第一写入指令包含该第一内存地址及该目标值;根据该第一写入指令产生第二写入指令,其中该第二写入指令包含第二内存地址及该目标值;以及根据该第二内存地址将该目标值写入该内存。
本发明的另一实施例提供一种存取内存的电子装置,包含处理单元、总线及内存控制器。处理单元包含计算电路及总线接口控制电路,该计算电路根据内存存取指令通过该总线接口控制电路产生第一写入指令。该内存存取指令包含第一内存地址及目标值,而该第一写入指令包含第二内存地址及该目标值。总线耦接该总线接口控制电路,用来根据该第一写入指令产生第二写入指令。该第二写入指令包含该第二内存地址及该目标值。内存控制器耦接该总线,用来根据该第二内存地址将该目标值写入该内存。
有关本发明的特征、实际操作与功效,将结合附图作实施例详细说明如下。
附图说明
图1是本发明电子装置的一实施例的功能方块图;
图2是本发明电子装置的另一实施例的功能方块图;
图3是本发明数据写入方法的一实施例的流程图;
图4是步骤S330的细部流程;
图5是步骤S360的细部流程;
图6是本发明数据写入方法的另一实施例的流程图;
图7是步骤S660的细部流程;
图8是本发明电子装置的另一实施例的功能方块图;
图9是本发明数据写入方法的另一实施例的流程图;以及
图10是步骤S940的细部流程。
符号说明
100、200、800:电子装置
110、210、810:处理单元
120、220、820:汇流排或总线
130、230、830:内存控制器
135、235、835:内存
140、240、840:周边界面
112、212、812:高速缓存
114、214、814:总线接口控制电路
116、216、816:主接口写入电路
118、218、818:主接口读取电路
211、811:地址映像控制单元
WI1:第一写入指令
WI2:第二写入指令
805:计算电路
S310、S320、S330、S340、S350、S360、S370、S380、S410、S420、S430、S510、S520、S610、S620、S630、S640、S650、S660、S670、S680、S710、S720、S730、S740、S910、S920、S930、S940、S950、S960、S970、S980、S1010、S1020、S1030:步骤
具体实施方式
以下说明内容的技术用语是参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释是以本说明书的说明或定义为准。
本发明公开内容包含存取内存的电子装置及数据写入方法。由于本发明的电子装置所包含的部分组件单独而言可能为已知组件,因此,在不影响该装置发明的充分公开及可实施性的前提下,以下说明对于已知组件的细节将予以省略。此外,本发明的数据写入方法的部分或全部流程可以是软件及/或硬件的形式,并且可通过本发明的电子装置或其等效装置来执行,在不影响该方法发明的充分公开及可实施性的前提下,以下方法发明的说明将着重于步骤内容而非硬件。
图1是本发明电子装置的一实施例的功能方块图。电子装置100包含处理单元110、总线(或总线(interconnect))120、内存控制器130、内存135以及周边接口140。处理单元110包含高速缓存112及总线接口控制电路114。总线接口控制电路114包含主接口写入电路116及主接口读取电路118。
图2是本发明电子装置的另一实施例的功能方块图。电子装置200包含处理单元210、总线(或总线)220、内存控制器230、内存235以及周边接口240。处理单元210包含地址映像控制单元(address mapping control unit)211、高速缓存212及总线接口控制电路214。总线接口控制电路214包含主接口写入电路216及主接口读取电路218。
处理单元110及处理单元210可以是具有程序执行能力的电路或电子组件,例如中央处理器、微处理器、微处理单元、数字信号处理器、特殊应用集成电路(ApplicationSpecific Integrated Circuit,ASIC),或其等效电路。
处理单元110(或210)通过总线接口控制电路114(或214)来控制或操作总线120(或220)。主接口写入电路116(或216)主要用来对从属装置(例如内存)执行写入操作,而主接口读取电路118(或218)主要用来对从属装置执行读取操作。周边接口140(或240)可以是通用串行总线(Universal Serial Bus,USB)或通用异步收发传输器(UniversalAsynchronous Receiver/Transmitter,UART)。
地址映像控制单元211储存内存的实体地址(physical address)与虚拟地址(virtual address)的对应关系(mapping),可供处理单元210、总线220及内存控制器230存取。
图3为本发明数据写入方法的一实施例的流程图。以下的说明请同时参阅图1~3。
步骤S310:处理单元110(或210)根据内存存取指令(例如,根据填好的缓存器内容,即编译程序(compiler)所编译出的机器码(machine code))通过总线接口控制电路114(或214)产生第一写入指令WI1,第一写入指令WI1包含第一内存地址及目标值。以RISC-V(「RISC」代表精简指令集计算机(reduced instruction set computer))的架构为例,该内存存取指令例如是「MEMSET rd,rs1,rs2」,其一种范例格式如下所示:
其中「rd」表示MEMSET操作的目的地址(destination address),「rs1」表示MEMSET操作的数量(或称为长度信息),「rs2」表示MEMSET操作的固定值,「imm」用来支持不同数据类型或者宽度定义(默认值为0,0代表1个字节宽,1代表2个字节宽,2代表4个字节宽,8代表8个字节宽,9代表16个字节宽,依此类推),「opt」为选择性的字段(可以有值或没有值),而「OP code」表示操作码(operation code)(此例以「OP code」=0x3f代表该内存存取指令是处理单元110(或210)的一个扩展(extended)指令)。
当处理单元110(或210)执行到该内存存取指令时,处理单元110(或210)将该内存存取指令中所包含的信息转换成总线120(或220)上的指令。更明确地说,处理单元110(或210)根据该内存存取指令通过总线接口控制电路114产生第一写入指令WI1(即,总线120(或220)上的指令),而第一写入指令WI1包含第一内存地址(即「rd」的值)、长度信息(即「rs1」的值)及目标值(即「rs2」的值)。
以总线120(或220)为高级可扩充接口(Advanced eXtensible Interface,AXI)为例,当处理单元110(或210)执行到该内存存取指令时,处理单元110(或210)通过总线接口控制电路114(或214)所产生的该第一写入指令WI1包含awaddr(目的地址,即「rd」的值)、awlen(丛发长度(burst length),即「rs1」的值)、awsize(「imm」的值)、awvalid(等于1)、wdata(目标值,即「rs2」的值)、wstrb(各字节的屏蔽位(mask bit))及ID。其中,wdata、wstrb及ID属于AXI的WChannel的信息。在一些实施例中,总线接口控制电路114(或214)可以将AXI指令的用户扩展信号(例如awuser[0])指定为特殊值(例如1),以表示第一写入指令WI1是与memset函数相关的指令。关于AXI的细节请参考:https://en.wikipedia.org/wiki/Advanced_eXtensible_Interface。
步骤S320:总线120(或220)判断已产生的第二写入指令WI2的个数N_WI2是否等于长度信息。更明确地说,总线120(或220)在收到第一写入指令WI1后,先储存长度信息(即「rs1」的值)。步骤S320的结果为是表示总线120(或220)已执行完毕第一写入指令WI1(即,完成等效于memset函数、strset函数或strnset函数的操作);步骤S320的结果为否表示总线120(或220)未执行完毕第一写入指令WI1。第二写入指令WI2将在下面详述。
步骤S330:总线120(或220)根据第一写入指令WI1产生第二写入指令WI2。第二写入指令WI2包含第二内存地址及目标值。步骤S330的细节将在图4中详述。于第二写入指令WI2产生后,总线120(或220)将第二写入指令WI2传送给内存控制器130(或230)。
步骤S340:总线120(或220)更新已产生的第二写入指令WI2的个数N_WI2,例如,将N_WI2加1。
步骤S350:总线120(或220)判断第一写入指令WI1是否为字符串相关的指令。当第一写入指令WI1是字符串相关的指令(例如对应于strset函数或strnset函数),则步骤S350的结果为是(前往步骤S360),否则为否(前往步骤S370)。
步骤S360:总线120(或220)判断是否已到达字符串的结尾。当总线120(或220)已处理到字符串的结尾(即,已完成该字符串的处理),则步骤S360的结果为是(前往步骤S380),否则为否(前往步骤S370)。
步骤S370:内存控制器130(或230)根据第二内存地址将目标值写入内存135(或235)。在一些实施例中,内存控制器130(或230)将目标值写入第二内存地址。步骤S370结束后,流程回到步骤S320。
步骤S380:总线120(或220)停止将目标值写入内存135(或235)(即,停止产生第二写入指令WI2)。也就是说,总线120(或220)已完成等效于memset函数、strset函数或strnset函数的操作。
在图3的流程中,如果长度信息(即「rs1」的值)大于内存控制器130(或230)所能接受的最大丛发长度,则总线120(220)将一个第二写入指令WI2拆分成多次传输,并记录当前的传输的源、目的地址及数量,以便下次接着传输。
请参阅图4,图4是步骤S330的细部流程,包含以下的子步骤。
步骤S410:总线120(或220)判断是否需查询地址映像控制单元211。当步骤S410的结果为否,总线120执行步骤S430;当步骤S410的结果为是,总线220执行步骤S420。因为图1的实施例不包含地址映像控制单元,所以总线120不需要查询地址映像控制单元。在图2的实施例中,每当总线220处理的地址(即,第一内存地址)超过地址映像控制单元211的一个默认的地址范围(例如4KB)时,总线220需要向地址映像控制单元211提出地址转换的请求以获取目的地址(即,将虚拟地址转换成实体地址)。
步骤S420:总线220根据第一内存地址存取地址映像控制单元211以得到实体地址,并且根据实体地址及已产生的第二写入指令WI2的个数N_WI2产生第二内存地址。更明确地说,第一内存地址是虚拟地址,地址映像控制单元211记录对应于第一内存地址的实体地址。取得该实体地址后,总线220将该实体地址偏移(offset)个数N_WI2以产生第二内存地址。第二写入指令WI2包含第二内存地址及目标值。
步骤S430:总线120根据第一内存地址及已产生的第二写入指令WI2的个数更新第二内存地址。更明确地说,第一内存地址是实体地址,第一内存地址偏移个数N_WI2之后的地址为当前的实体地址(即,第二内存地址)。第二写入指令WI2包含第二内存地址及目标值。
请参阅图5,图5是步骤S360的细部流程,包含以下的子步骤。
步骤S510:总线120(或220)控制内存控制器130(或230)存取内存135(或235),以读取字符串的一部分(该部分例如是字符串的结尾)。
步骤S520:总线120(或220)判断字符串的该部分是否包含字符串尾端标记(例如「0」)。当步骤S520的结果为是,则步骤S360的结果为是;否则S360的结果为否。
图6为本发明数据写入方法的另一实施例的流程图。以下的说明请同时参阅图1~2及图6。步骤S610、S640及S650的操作细节分别与步骤S310、S350及S360相似或相同,故不再赘述。
步骤S620:总线120(或220)根据第一写入指令WI1产生第二写入指令WI2。第二写入指令WI2包含第二内存地址、目标值及长度信息。在一些实施例中,第二写入指令WI2可以等于第一写入指令WI1(换言之,第二内存地址等于第一内存地址)。于第二写入指令WI2产生后,总线120(或220)将第二写入指令WI2传送给内存控制器130(或230)。
步骤S630:内存控制器130(或230)判断目标值的写入次数N_TR是否等于长度信息。更明确地说,内存控制器130(或230)在收到第二写入指令WI2后,先储存长度信息(即「rs1」的值)。步骤S630的结果为是表示内存控制器130(或230)已执行完毕第二写入指令WI2(即,完成等效于memset函数、strset函数或strnset函数的操作);步骤S630的结果为否表示内存控制器130(或230)未执行完毕第二写入指令WI2。
步骤S660:内存控制器130(或230)根据第二内存地址将目标值写入内存135(或235)。步骤S660的细节将在图7中详述。
步骤S670:内存控制器130(或230)更新目标值的写入次数N_TR,例如,将N_TR加1。
步骤S680:内存控制器130(或230)停止将目标值写入内存135(或235)。也就是说,内存控制器130(或230)已完成等效于memset函数、strset函数或strnset函数的操作。
请参阅图7,图7是步骤S660的细部流程,包含以下的子步骤。
步骤S710:内存控制器130(或230)判断是否需查询地址映像控制单元211。当步骤S710的结果为否,内存控制器130执行步骤S730及S740;当步骤S710的结果为是,内存控制器230执行步骤S720及S740。
步骤S720:内存控制器230根据第二内存地址存取地址映像控制单元211以得到实体地址,并且根据实体地址及写入次数N_TR产生第三内存地址。更明确地说,第二内存地址是虚拟地址,地址映像控制单元211记录对应于第二内存地址的实体地址。取得该实体地址后,内存控制器230将该实体地址偏移次数N_TR以产生第三内存地址。
步骤S730:内存控制器130根据第二内存地址及写入次数N_TR产生第三内存地址。更明确地说,第二内存地址是实体地址,第二内存地址偏移次数N_TR之后的地址为当前的实体地址(即,第三内存地址)。
步骤S740:内存控制器130(或230)在内存135(或235)的第三内存地址写入目标值。
在上述的实施例中,总线120(或220)或内存控制器130(或230)的回复时机如下:(1)在收到第一写入指令WI1(或第二写入指令WI2)时即回复处理单元110(或210);或是(2)完成所有写入动作之后再回复。回复的方式包含(但不限于)回传响应(response)及/或发送中断(interrupt)。
综上所述,使用总线或内存控制器实作与连续写入内存相关的操作(包含但不限于C语言中的memset函数、strset函数及strnset函数)具有以下的优点:(1)处理单元需要处理的指令数较少;(2)处理单元的运行时间短;及(3)避免长时间占用处理单元与总线之间的带宽(即,图3的实施例)或处理单元与内存控制器之间的带宽(即,图6的实施例)。也就是说,本发明揭露一种通过扩展处理单元的指令以及扩展通讯协议,以在总线或者内存控制器实现加速内存的连续写入的装置及方法。本发明减少了占用处理单元的时间、提高了代码效率、减少代码数量(即,占用较少程序空间),以及大大减少了处理单元与总线之间的交易(transaction)(即,可以让处理单元通过总线传输更多的数据)。
图8是本发明电子装置的另一实施例的功能方块图。电子装置800包含处理单元810、总线(或总线)820、内存控制器830、内存835以及周边接口840。处理单元810包含计算电路805、地址映像控制单元811、高速缓存812及总线接口控制电路814。总线接口控制电路814包含主接口写入电路816及主接口读取电路818。计算电路805可以是处理单元810的一个引擎(engine),或是一个共同处理器(co-processor)。地址映像控制单元811、高速缓存812、总线接口控制电路814、主接口写入电路816及主接口读取电路818的功能分别与地址映像控制单元211、高速缓存212、总线接口控制电路214、主接口写入电路216及主接口读取电路218相似或相同,故不再赘述。
图9为本发明数据写入方法的另一实施例的流程图,图10是步骤S940的细部流程。以下的说明请同时参阅图8~10。
步骤S910:计算电路805判断已产生的第一写入指令WI1的个数N_WI1是否等于长度信息。步骤S910与步骤S320相似,请参考步骤S320的说明。
步骤S920:计算电路805判断内存存取指令是否为字符串相关的指令。步骤S920与步骤S350相似,请参考步骤S350的说明。
步骤S930:计算电路805判断是否已到达字符串的结尾。步骤S930与步骤S360相似,请参考步骤S360的说明及图5。
步骤S940:计算电路805根据内存存取指令通过总线接口控制电路814产生第一写入指令WI1,内存存取指令包含第一内存地址及目标值,第一写入指令包含第二内存地址及目标值。步骤S940的细节将在图10中详述。
步骤S950:计算电路805更新已产生的第一写入指令WI1的个数N_WI1,例如,将N_WI1加1。
步骤S960:总线820根据第一写入指令WI1产生第二写入指令WI2,第二写入指令WI2包含第二内存地址。在一些实施例中,总线820可以不对第一写入指令WI1进行处理,直接将第一写入指令WI1传送给内存控制器830;换言之,第二写入指令WI2等于第一写入指令WI1。
步骤S970:内存控制器830根据第二内存地址将目标值写入内存835。步骤S970与步骤S370相似,请参考步骤S370的说明。
步骤S980:计算电路805停止将目标值写入内存835(即,停止产生第一写入指令WI1)。步骤S980与步骤S380相似,请参考步骤S380的说明。
步骤S1010:计算电路805判断是否需查询地址映像控制单元811。当步骤S1010的结果为否,计算电路805执行步骤S1030;当步骤S1010的结果为是,计算电路805执行步骤S1020。步骤S1010与步骤S410相似,请参考步骤S410的说明。
步骤S1020:计算电路805根据第一内存地址存取地址映像控制单元811以得到实体地址,并且根据实体地址及已产生的第一写入指令的个数N_WI1产生第二内存地址。步骤S1020与步骤S420相似,请参考步骤S420的说明。
步骤S1030:计算电路805根据第一内存地址及已产生的第一写入指令WI1的个数N_WI1更新第二内存地址。步骤S1030与步骤S430相似,请参考步骤S430的说明。
在图8~10的实施例中,处理单元810利用一个引擎或是共同处理器来执行与memset函数、strset函数或strnset函数相关的操作,如此一来,处理单元810的其他引擎或共同处理器可以执行其他的任务,所以不会大量消耗处理单元810的工作时间。
上文揭露的实施例虽以C语言为例,然此并非对本发明的限制,本技术领域人士可依本发明公开内容适当地将本发明应用于其它类型的程序语言(例如Python、TCL等)。
上文揭露的实施例虽以AXI为例,然此并非对本发明的限制,本技术领域人士可依本发明的揭露适当地将本发明应用于其它类型的总线(例如AMBA(Advanced Micro-controller Bus Architecture)、APB(Advanced Peripheral Bus)或AHB(Advanced High-performance Bus))。
上文揭露的实施例虽以RISC-V为例,然此并非对本发明的限制,本技术领域人士可依本发明的揭露适当地将本发明应用于其它类型的架构(例如CISC、MIPS、ARM、RISC)。
由于本技术领域普通技术人员可通过本发明中装置的公开内容来了解本发明的方法发明的实施细节与变化,因此,为避免赘文,在不影响该方法发明的公开要求及可实施性的前提下,重复的说明在此予以省略。请注意,上文揭露的图标中,组件的形状、尺寸及比例仅为示意,是供本技术领域普通技术人员了解本发明的用途,非用以限制本发明。此外,在一些实施例中,上文揭露的流程图中所提及的步骤可依实际操作调整其前后顺序,甚至可同时或部分同时执行。
虽然本发明的实施例如上所述,然而这些实施例并非用来限定本发明,本技术领域的普通技术人员可依据本发明的明示或隐含的内容对本发明的技术特征施以变化,凡此种种变化均可能属于本发明所寻求的专利保护范畴,换言之,本发明的专利保护范围须视本申请的权利要求书所界定的范围为准。
Claims (10)
1.一种存取内存的电子装置,其特征在于,所述电子装置包含:
处理单元,包含总线接口控制电路,所述处理单元根据内存存取指令通过所述总线接口控制电路产生第一写入指令,其中所述内存存取指令包含第一内存地址及目标值,所述第一写入指令包含所述第一内存地址及所述目标值;
总线,耦接所述总线接口控制电路,用来根据所述第一写入指令产生第二写入指令,所述第二写入指令包含第二内存地址及所述目标值;以及
内存控制器,耦接所述总线,用来根据所述第二内存地址将所述目标值写入所述内存。
2.如权利要求1所述的电子装置,其特征在于,所述第一写入指令包含长度信息,且所述总线持续产生所述第二写入指令直到所述第二写入指令的一个数等于所述长度信息。
3.如权利要求2所述的电子装置,其特征在于,所述总线还根据所述第一内存地址及所述个数更新所述第二内存地址。
4.如权利要求2所述的电子装置,其特征在于,所述处理单元还包含地址映像控制单元,所述总线还根据所述第一内存地址存取所述地址映像控制单元以得到实体地址,并根据所述实体地址及所述个数产生所述第二内存地址。
5.如权利要求1所述的电子装置,其特征在于,所述第一写入指令包含长度信息,且所述内存控制器持续将所述目标值写入所述内存直到写入次数等于所述长度信息。
6.如权利要求5所述的电子装置,其特征在于,所述内存控制器根据所述第二内存地址及所述写入次数产生第三内存地址,并且将所述目标值写入所述第三内存地址。
7.如权利要求5所述的电子装置,其特征在于,所述处理单元还包含地址映像控制单元,所述内存控制器根据所述第二内存地址存取所述地址映像控制单元以得到实体地址、根据所述实体地址及所述写入次数产生第三内存地址,并且将所述目标值写入所述第三内存地址。
8.如权利要求1所述的电子装置,其特征在于,所述第一写入指令是关于字符串,所述总线或所述内存控制器存取所述内存以读取所述字符串的一部分,并且当所述部分包含字符串尾端标记时,所述总线停止产生所述第二写入指令,或是所述内存控制器停止将所述目标值写入所述内存。
9.一种数据写入方法,用来对内存写入数据,其特征在于,所述数据写入方法包含:
根据内存存取指令通过总线接口控制电路产生第一写入指令,其中所述内存存取指令包含第一内存地址及目标值,所述第一写入指令包含所述第一内存地址及所述目标值;
根据所述第一写入指令产生第二写入指令,其中所述第二写入指令包含第二内存地址及所述目标值;以及
根据所述第二内存地址将所述目标值写入所述内存。
10.一种存取内存的电子装置,其特征在于,所述电子装置包含:
处理单元,包含计算电路及总线接口控制电路,所述计算电路根据内存存取指令通过所述总线接口控制电路产生第一写入指令,其中所述内存存取指令包含第一内存地址及目标值,所述第一写入指令包含第二内存地址及所述目标值;
总线,耦接所述总线接口控制电路,用来根据所述第一写入指令产生第二写入指令,所述第二写入指令包含所述第二内存地址及所述目标值;以及
内存控制器,耦接所述总线,用来根据所述第二内存地址将所述目标值写入所述内存。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111056703.2A CN115794692A (zh) | 2021-09-09 | 2021-09-09 | 存取内存的电子装置及数据写入方法 |
TW110139143A TWI783742B (zh) | 2021-09-09 | 2021-10-21 | 存取記憶體的電子裝置及資料寫入方法 |
US17/902,026 US20230072176A1 (en) | 2021-09-09 | 2022-09-02 | Electronic device that accesses memory and data writing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111056703.2A CN115794692A (zh) | 2021-09-09 | 2021-09-09 | 存取内存的电子装置及数据写入方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115794692A true CN115794692A (zh) | 2023-03-14 |
Family
ID=85386628
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111056703.2A Pending CN115794692A (zh) | 2021-09-09 | 2021-09-09 | 存取内存的电子装置及数据写入方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230072176A1 (zh) |
CN (1) | CN115794692A (zh) |
TW (1) | TWI783742B (zh) |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5559980A (en) * | 1993-03-18 | 1996-09-24 | Lucent Technologies Inc. | Method and apparatus for detecting references to deallocated memory in a dynamic memory allocation system |
AU2003271629A1 (en) * | 2002-09-30 | 2004-04-19 | Telefonaktiebolaget Lm Ericsson (Publ) | Method and memory controller for scalable multi-channel memory access |
US7243205B2 (en) * | 2003-11-13 | 2007-07-10 | Intel Corporation | Buffered memory module with implicit to explicit memory command expansion |
US20090089515A1 (en) * | 2007-10-02 | 2009-04-02 | Qualcomm Incorporated | Memory Controller for Performing Memory Block Initialization and Copy |
US20090157949A1 (en) * | 2007-12-18 | 2009-06-18 | Leibowitz Robert N | Address translation between a memory controller and an external memory device |
CN105808455B (zh) * | 2014-12-31 | 2020-04-28 | 华为技术有限公司 | 访问内存的方法、存储级内存及计算机系统 |
US10521375B2 (en) * | 2017-06-22 | 2019-12-31 | Macronix International Co., Ltd. | Controller for a memory system |
GB201903513D0 (en) * | 2019-03-14 | 2019-05-01 | Blueshift Memory Ltd | Moving data in a memory and command for memory control |
-
2021
- 2021-09-09 CN CN202111056703.2A patent/CN115794692A/zh active Pending
- 2021-10-21 TW TW110139143A patent/TWI783742B/zh active
-
2022
- 2022-09-02 US US17/902,026 patent/US20230072176A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230072176A1 (en) | 2023-03-09 |
TWI783742B (zh) | 2022-11-11 |
TW202311964A (zh) | 2023-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113254368B (zh) | 从axi总线到opb总线的数据写入方法及读取方法 | |
CN101751371B (zh) | 在不同种类处理单元中对非统一存储器访问的芯片组支持 | |
US9858235B2 (en) | Emulated legacy bus operation over a bit-serial bus | |
JP5824488B2 (ja) | トランザクション属性を修正するためのメモリ領域オーダリング要求に関するコンプリータ知識の使用 | |
CN108268414B (zh) | 基于spi模式的sd卡驱动器及其控制方法 | |
JP4563829B2 (ja) | ダイレクトメモリアクセス制御方法、ダイレクトメモリアクセス制御装置、情報処理システム、プログラム | |
WO2021120623A1 (zh) | 一种数据传输方法、装置及相关组件 | |
US11657011B2 (en) | Avalon-to-Axi4 bus conversion method | |
CN113742269B (zh) | 用于epa设备的数据传输方法、处理设备和介质 | |
WO2024051122A1 (zh) | 一种PCIe中断处理方法、装置、设备及非易失性可读存储介质 | |
CN114238184B (zh) | 一种多功能dma的传输方法、装置及存储介质 | |
JP4373255B2 (ja) | ダイレクトメモリアクセス制御装置および方法 | |
JPH1011180A (ja) | コンピュータ・システムに用いられる周辺装置及びその制御方法 | |
CN114327975A (zh) | 片上系统 | |
CN115794692A (zh) | 存取内存的电子装置及数据写入方法 | |
CN113778934A (zh) | 基于PCIe的高速实时传输系统 | |
CN114168503A (zh) | 一种接口ip核控制方法、接口ip核、装置及介质 | |
CN116745754A (zh) | 一种访问远端资源的系统及方法 | |
US7694004B2 (en) | Bit-granular writes of control registers | |
CN108255769B (zh) | 一种axi-plb桥 | |
TW448361B (en) | Data switching system and method using bandwidth management unit to reduce data traffic | |
US12039294B2 (en) | Device and method for handling programming language function | |
US20050144331A1 (en) | On-chip serialized peripheral bus system and operating method thereof | |
Liang et al. | PCIe/NIC | |
CN117389685B (zh) | 虚拟机热迁移标脏方法及其装置、后端设备、芯片 |
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 |