CN101996142B - 一种访问存储器的方法及装置 - Google Patents
一种访问存储器的方法及装置 Download PDFInfo
- Publication number
- CN101996142B CN101996142B CN 201010549131 CN201010549131A CN101996142B CN 101996142 B CN101996142 B CN 101996142B CN 201010549131 CN201010549131 CN 201010549131 CN 201010549131 A CN201010549131 A CN 201010549131A CN 101996142 B CN101996142 B CN 101996142B
- Authority
- CN
- China
- Prior art keywords
- address
- row
- conversion
- view data
- macro block
- 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
Landscapes
- Memory System (AREA)
- Image Input (AREA)
Abstract
本发明公开了一种访问存储器的方法及装置,用于提高数据的写效率。其中,访问存储器的方法包括:对收到的以宏块方式进行处理的数据进行地址变换;根据变换后的地址将一个宏块的数据存储到存储器中存储块的一行。本发明还公开了用于实现所述方法的装置。
Description
技术领域
本发明涉及计算机及图像处理领域,特别是访问存储器的方法及装置。
背景技术
存储器包括RAM和ROM等。RAM又包括动态随机存储器(DynamicRandom Access Memory,DRAM)和静态随机存储器。DRAM器件的存储空间是按照存储块(bank)、行(row)和列(column)进行分配的。每个存储块中只能有一行处于打开(actived)状态,如果需要向该存储块的其它行读写数据,则必须先关闭打开状态的行,再打开需要读写的行。
视频显示模块(Video Display)等一些模块对图像的读写是按照行进行的,通常按照从左到右和从上到下的顺序一行行的读取所有的图像数据。因此现有技术在存储数据时是以行为单位将一行图像数据存储到DRAM中的相应行。
而大多数视频编解码器(Video Codec)是按照矩形宏块(Marco Block)或者矩形块(Block)(以下统称宏块)对图像进行读写和编解码的。宏块的大小可以是8×8、16×16或16×32等,以16×16为例,一帧图像如图1A所示。当需要写一个宏块的数据时,参见图1B所示,其主要过程如下:
步骤11:直接根据总线地址将宏块的第一行数据写入存储块的第一行。
步骤12:关闭存储块的第一行,并打开存储块的第二行。
步骤13:直接根据总线地址将宏块的第二行数据写入存储块的第二行。
步骤14:关闭存储块的第二行,并打开存储块的第三行。
重复以上过程,直至将宏块的16行数据均写入存储块。可见需要至少开关15次,严重影响视频编解码器的工作效率,并且频繁的开关操作对DRAM也是一种损耗。
现有技术为解决该问题,将数据存储在多个存储块中,以减少操作。但由于存储块的数量较少,通常只有4个或者8个存储块,所以减少操作的次数有限,视频编解码器的工作效率仍然较低。
发明内容
本发明实施例提供一种访问存储器的方法及装置,用于改进数据的存储方式,有利于提高数据的写效率。
一种访问存储器的方法,包括以下步骤:
对收到的以宏块方式进行处理的数据进行地址变换;
根据变换后的地址将一个宏块的数据存储到存储器中存储块的一行。
一种用于访问存储器的装置,包括:
变换模块,一种用于访问存储器的装置,包括:
变换模块,用于对收到的以宏块方式进行处理的数据进行地址变换;
写模块,用于根据变换后的地址将一个宏块的数据存储到存储器中存储块的一行。
一种数据处理设备,包括:
外接单元,用于将数据和数据的地址发送给控制器,以及指示控制器读取数据并接收控制器发送的数据;
控制器,用于对收到的以宏块方式进行处理的数据进行地址变换,以及根据变换后的地址将一个宏块的数据存储到存储器中存储块的一行,并根据外接单元的指示以行的方式从存储器中读取存储的数据;
存储器,用于存储所述图像数据。
本发明实施例通过将宏块的数据存储到存储器中存储块的一行,节省了对存储器行的开关操作的次数,从而提高了写效率,尤其对于视频数据的写效率有明显提高,进而提高视频处理效率及整个设备的运行效率。并且减少开关操作还可以延长存储器的使用寿命和降低功耗。
附图说明
图1A为现有技术中16x16的宏块的示意图;
图1B为现有技术中访问存储器的方法流程图;
图2为本发明实施例中访问存储器的第一实施例的方法流程图;
图3为本发明实施例中访问存储器的第二实施例的方法流程图;
图4为本发明实施例中数据存储的方法流程图;
图5为本发明实施例中数据存取的方法流程图;
图6为本发明实施例中数据处理设备的结构图;
图7为本发明实施例中控制器的第一实施例的结构图;
图8A为本发明实施例中控制器的第二实施例的结构图;
图8B为本发明实施例中控制器的第三实施例的结构图。
具体实施方式
本发明实施例通过将宏块的数据存储到存储器中存储块的一行,节省了对存储器行的开关操作的次数,从而提高了写效率,尤其对于视频数据的写效率有明显提高,进而提高视频处理效率及整个设备的运行效率。并且减少开关操作还可以延长存储器的使用寿命和降低功耗。
参见图2,本实施例中访问存储器的第一实施例的方法流程如下:
步骤201:对收到的以宏块方式进行处理的数据进行地址变换。
步骤202:根据变换后的地址将一个宏块的数据存储到存储器中存储块的一行。
参见图3,本实施例中访问存储器的第二实施例的方法流程如下:
步骤301:对收到的以宏块方式进行处理的数据进行地址变换。
步骤302:根据变换后的地址将一个宏块的数据存储到存储器中存储块的一行。
步骤303:以行的方式读取存储的数据。
参见图4,本实施例中数据存储的方法流程如下:
步骤401:外接单元根据图像的宽度和存储块中行的长度获得地址间隔和地址。
此步骤中的地址为变换前的地址,是根据图像宽度和存储块中行的长度确定的。地址间隔是通过下列方式确定的:当图像宽度不大于行的长度时,两行图像的第一个像素点变换前的地址相距1倍行的长度;当图像宽度大于行的长度且不大于1.5倍行的长度时,两行图像的第一个像素点变换前的地址相距1.5倍行的长度;当图像宽度大于1.5倍行的长度且不大于2倍行的长度时,两行图像的第一个像素点变换前的地址相距2倍行的长度;当图像宽度大于2倍行的长度时,两行图像的第一个像素点变换前的地址相距的倍数是图像宽度与行的长度的比值再向上取整所得到的整数。较佳的,当图像宽度小于行的长度时,从存储块中行的第一个位置起,每行图像的像素点变换前的地址顺序对应各存储位置。另外两种情况也尽可能的从存储块中行的第一个位置开始存储。因此确定了地址间隔便可以确定地址。
如果当前图像的宽度相对于上一次存储的图像的宽度不变,则外接单元不需要重新确定地址间隔,可直接获得已有的地址间隔。或者,外接单元已确定有各种图像宽度对应的地址间隔,每次只需根据当前图像的宽度查找(即获得)相应的地址间隔。
步骤402:控制器接收外接单元发送的地址和数据。
步骤403:控制器选择优先级最高的地址和数据。如果该地址为逻辑地址,则控制器还需要将该逻辑地址转换为存储器可识别的物理地址。
步骤404:控制器根据发送地址的外接单元的类型确定是否需要进行地址变换,如果需要,则继续步骤405,否则继续步骤406。具体的,在控制器中配置有哪些外接单元发送的地址需要进行变换,哪些不需要进行变换。例如,视频编解码器发送的地址需要进行变换,显示器发送的地址不需要进行变换。
步骤405:控制器对地址进行变换。继续步骤406。
步骤406:控制器根据地址将数据存储到存储器。如果是接步骤404,则直接根据收到的地址存储数据,如果是接步骤405,则根据变换后的地址存储数据。
具体的,在控制器中配置有外接单元与存储器中存储块的对应关系。例如,视频编解码器对应第一存储块(第一存储块可以是多个),显示器对应第二存储块(第二存储块可以是多个)。控制器收到视频编解码器发送的地址时对该地址进行变换,再根据变换后的地址进行读写操作,特别是对第一存储块进行读写操作;控制器收到显示器发送的地址时不进行变换,直接根据该地址进行读写操作,特别是对第二存储块进行读写操作。其中,在外接单元中也配置有其与存储块的对应关系,外接单元发送的地址包括自身对应的存储块的地址。
在步骤405中,地址变换方式有多种,如根据公式:New Row Address={Row Address[RMSB:A],Column Address[B-1:C],Row Address[D-1:0]},NewColumn Address={Column Address[CMSB:B],Row Address[A-1:D],ColumnAddress[C-1:0]},对收到的需要以宏块方式进行处理的数据进行地址变换。其中,New Row Address表示变换后的行地址,Row Address[]表示变换前地址位为[]的行地址,Column Address[]表示变换前地址位为[]的列地址,RMSB表示行地址的最高位,CMSB表示列地址的最高位,A、B、C和D为预设的参数,A≤RMSB+1,B≤CMSB+1,0≤D,0≤C,较佳的,B-C=A-D=以2为底宏块行数的对数,B=CMSB或CMSB+1,D=0或1。B=CMSB的情况是:图像的相邻两行的第一个元素存储地址的距离为存储行长度的X.5倍;B=CMSB+1的情况是:图像的相邻两行的第一个元素存储地址的距离为存储行长度的整数倍。D=0的情况是:图像宽度小于存储行的长度;D=1的情况是:图像宽度大于存储行的长度。此方法得到的C的大小与宏块的列数有关。
若A=RMSB+1,则New Row Address简化为New Row Address={ColumnAddress[B-1:C],Row Address[D-1:0]};若D=0,则New Row Address简化为New Row Address={Row Address[RMSB:A],Column Address[B-1:C]};若B=CMSB+1,则New Column Address简化为New Column Address={RowAddress[A-1:D],Column Address[C-1:0]};若C=0,则New Column Address简化为New Column Address={Column Address[CMSB:B],Row Address[A-1:D]}。
例如,图像宽度(width)为1920,DRAM的一个存储行的大小为2048,因此图像两行第一个像素的存储距离可以设置相差2048。按照Bus Address={Bank Address,Row Address,Column Address}的分配方式,针对一个存储块,则图像第一行对应的Row Address=0x0,Column Address=0x0~0x77F(即0~1919),第二行对应的Row Address=0x1,Column Address=0x0~0x77F,第三行对应的Row Address=0x2,Column Address=0x0~0x77F,以此类推,即Column Address保持不变,Row Address变化。存储块中一行可容纳的宏块数为2048/16/16=8(以16×16的宏块为例),则A=4,B=CMSB+1,C=CMSB-3,D=0。经过地址变换后,存储块的一个行中连续存放的数据顺序就是第一个宏块的第一行,然后是第二个宏块的第一行一直到第八个宏块的第一行。然后是宏块一到八的第二行,第三行到第十六行。然后从另一行开始存储第九个宏块。
控制器收到的地址是总线地址,该总线地址Bus Address={Bank Address,Row Address,Column Address},地址变换过程中只对行地址(Row Address)和列地址(Column Address)进行变换,块地址(Bank Address)可保持不变。
地址变换的方式不限于以上所述的方式,还可以有其它实现方案,例如建立转换前后的地址的对应关系等,凡是能够将一个宏块的数据存储到一行的方案均适用于本实施例。较佳的,存储块的一个行中连续存放的数据顺序就是第一个宏块的第一行,然后是第一个宏块的第二行,一直到第一个宏块的第16行,然后是第二个宏块,第三个宏块,一直到第八个宏块。然后从另一行开始存储第九个宏块。
参见图5,本实施例中数据读取的方法流程如下:
步骤501:控制器选择优先级最高的消息。消息的优先级可以同发送消息的外接单元的优先级。例如该消息为读命令。
步骤502:控制器获得外接单元发送的地址。其中,外接单元预先根据图像的宽度和存储块中行的长度获得地址间隔,并确定地址。
步骤503:控制器根据外接单元的类型确定是否需要进行地址变换,如果需要,则继续步骤504,否则继续步骤505。
步骤504:控制器对地址进行变换。继续步骤505。
步骤505:控制器根据地址以行为单位从存储器中读取数据。如果是接步骤503,则直接根据收到的地址读取数据,如果是接步骤504,则根据变换后的地址读取数据。
控制器可以从不同类型的外接单元对应的各存储块中读取数据。控制器向存储器发送数据和命令,以指示存储器根据收到的命令执行读操作。经过写操作后,控制器在从存储器读取一个宏块的数据时最多进行1次开关操作即可,大幅度提高了读操作的效率。
以上介绍了访问存储器的具体实现过程,该过程主要由数据处理设备实现,下面对数据处理设备的内部结构和功能进行介绍。
参见图6,本实施例中数据处理设备包括:外接单元601、数据存储装置控制器(以下简称控制器)602和存储器603。
外接单元601用于将数据和数据的地址发送给控制器,以及指示控制器读取数据并接收控制器发送的数据。外接单元601可以是显示器或视频编解码器等需要访问存储器603的模块。数据的地址为变换前的地址,是根据图像宽度和存储块中行的长度确定的。变换前的地址是通过下列方式确定的:当图像宽度不大于行的长度时,两行图像的第一个像素点变换前的地址相距1倍行的长度;当图像宽度大于行的长度且不大于1.5倍行的长度时,两行图像的第一个像素点变换前的地址相距1.5倍行的长度;当图像宽度大于1.5倍行的长度且不大于2倍行的长度时,两行图像的第一个像素点变换前的地址相距2倍行的长度;当图像宽度大于2倍行的长度时,两行图像的第一个像素点变换前的地址相距的倍数是图像宽度与行的长度的比值再向上取整所得到的整数。较佳的,当图像宽度小于行的长度时,从存储块中行的第一个位置起,每行图像的像素点变换前的地址顺序对应各存储位置。另外两种情况也尽可能的从存储块中行的第一个位置开始存储。
控制器602用于对收到的需要以宏块方式进行处理的数据进行地址变换,以及根据变换后的地址将一个宏块的数据存储到存储器中存储块的一行,并根据外接单元的指示以行的方式从存储器中读取存储的数据。控制器602可以是DRAM控制器等块式存储器的控制器。具体的,在控制器602中配置有哪些外接单元601发送的地址需要进行变换,哪些不需要进行变换,还配置有外接单元601与存储器603中存储块的对应关系。例如,视频编解码器发送的地址需要进行变换,显示器发送的地址不需要进行变换,视频编解码器对应第一存储块(第一存储块可以是多个),显示器对应第二存储块(第二存储块可以是多个)。控制器602收到视频编解码器发送的地址时对该地址进行变换,再根据变换后的地址进行读写操作,特别是对第一存储块进行读写操作;控制器602收到显示器发送的地址时不进行变换,直接根据该地址进行读写操作,特别是对第二存储块进行读写操作。其中,在外接单元601中也配置有其与存储块的对应关系,外接单元601发送的地址包括自身对应的存储块的地址。
存储器603用于存储数据。存储器603可以是DRAM等块式存储器。
参见图7所示的控制器的第一实施例的结构图,本实施例中控制器(即用于访问存储器的装置)包括:变换模块701和写模块702。
变换模块701,实现地址转换逻辑(如DRAM Address Generation),用于对收到的数据进行地址变换。具体的,变换模块701根据公式:New Row Address={Row Address[RMSB:A],Column Address[B-1:C],Row Address[D-1:0]},NewColumn Address={Column Address[CMSB:B],Row Address[A-1:D],ColumnAddress[C-1:0]},对收到的需要以宏块方式进行处理的数据进行地址变换。其中,New Row Address表示变换后的行地址,Row Address[]表示变换前地址位为[]的行地址,Column Address[]表示变换前地址位为[]的列地址,RMSB表示行地址的最高位,CMSB表示列地址的最高位,A、B、C和D为预设的参数,A≤RMSB+1,B≤CMSB+1,0≤D,0≤C,较佳的,B-C=A-D=以2为底宏块行数的对数,B=CMSB或CMSB+1,D=0或1。B=CMSB的情况是:图像的相邻两行的第一个元素存储地址的距离为存储行长度的X.5倍;B=CMSB+1的情况是:图像的相邻两行的第一个元素存储地址的距离为存储行长度的整数倍。D=0的情况是:图像宽度小于存储行的长度;D=1的情况是:图像宽度大于存储行的长度。此方法得到的C的大小与宏块的列数有关。
若A=RMSB+1,则New Row Address简化为New Row Address={ColumnAddress[B-1:C],Row Address[D-1:0]};若D=0,则New Row Address简化为New Row Address={Row Address[RMSB:A],Column Address[B-1:C]};若B=CMSB+1,则New Column Address简化为New Column Address={RowAddress[A-1:D],Column Address[C-1:0]};若C=0,则New Column Address简化为New Column Address={Column Address[CMSB:B],Row Address[A-1:D]}。
例如,图像宽度(width)为1920,DRAM一个存储行的大小为2048,因此图像两行第一个像素的存储距离可以设置相差2048。按照Bus Address={Bank Address,Row Address,Column Address}的分配方式,针对一个存储块,则图像第一行对应的Row Address=0x0,Column Address=0x0~0x77F(即0~1919),第二行对应的Row Address=0x1,Column Address=0x0~0x77F,第三行对应的Row Address=0x2,Column Address=0x0~0x77F,以此类推,即Column Address保持不变,Row Address变化。存储块中一行可容纳的宏块数为2048/16/16=8(以16×16的宏块为例),则A=4,B=CMSB+1,C=CMSB-3,D=0。经过地址变换后,存储块的一个行中连续存放的数据顺序就是第一个宏块的第一行,然后是第二个宏块的第一行一直到第八个宏块的第一行。然后是宏块一到八的第二行,第三行到第十六行。然后从另一行开始存储第九个宏块。
变换模块701收到的地址是总线地址,该总线地址Bus Address={BankAddress,Row Address,Column Address},地址变换过程中只对行地址(RowAddress)和列地址(Column Address)进行变换,块地址(Bank Address)可保持不变。如果收到的总线地址为逻辑地址,则变换模块701还需要将该逻辑地址转换为存储器可识别的物理地址,再进行地址变换。
地址变换的方式不限于以上所述的方式,还可以有其它实现方案,例如建立转换前后的地址的对应关系等,凡是能够将一个宏块的数据存储到一行的方案均适用于本实施例。较佳的,存储块的一个行中连续存放的数据顺序就是第一个宏块的第一行,然后是第一个宏块的第二行,一直到第一个宏块的第16行,然后是第二个宏块,第三个宏块,一直到第八个宏块。然后从另一行开始存储第九个宏块。
变换模块701根据发送地址的外接单元的类型确定是否需要进行地址变换,如果需要,则对地址进行变换,并将变换后的地址发送给写模块702;如果不需要变换,则直接将地址(物理地址)发送给写模块702。
写模块702用于根据变换后的地址将一个宏块的数据存储到存储器中存储块的一行。写模块702根据变换后的地址将一个宏块的数据存储到第一存储块中的一行,以及将收到的以非宏块方式进行处理的数据存储到第二存储块。现有技术中为了减少对存储器的开关操作,将数据存储到多个存储块中的行,以便同时对多个存储块操作,但是不同类型的外接单元601交叉访问存储器603时,会经常需要访问同一个存储块的不同行,反而会增加对存储块的开关操作,影响效率。本实施例中根据不同类型的外接单元601的特点,将其需要的数据按其特点存储到不同的存储块,进一步提高数据处理设备的工作效率。写模块702向存储器603发送数据和命令,以指示存储器603根据收到的命令执行写操作,因此写模块702包括数据控制逻辑(Data Path)和命令生成逻辑(如DRAM Command Generation)。在实际应用中,可能需要将编解码过程中得到的宏块数据写入存储器603,以16×16的宏块为例,现有技术在将一个宏块的数据写入存储器603时至少要进行开关操作15次,而本实施例在经过地址变换后,写模块702在将一个宏块的数据写入存储器603时最多进行1次开关操作即可,大幅度提高了写操作的效率。
本实施例中将一个宏块的数据存储到一行,是为了提高读取数据的效率,因此控制器602还包括读模块703,参见图8A所示的控制器的第二实施例的结构图。读模块703用于以行的方式读取存储的数据,包括从不同类型的外接单元601对应的各存储块中读取数据。读模块703向存储器603发送数据和命令,以指示存储器603根据收到的命令执行读操作,因此包括数据控制逻辑(Data Path)和命令生成逻辑(如DRAM Command Generation)。经过写模块702的操作后,读模块703在从存储器603读取一个宏块的数据时最多进行1次开关操作即可,大幅度提高了读操作的效率。
控制器602还包括缓冲器704和仲裁器(arbiter)705,参见图8B所示的控制器的第三实施例的结构图。缓冲器704用于缓存外接单元601发送的命令、数据和地址(三者可统称为消息),可以一个外接单元601连接一个缓冲器704,缓冲器704与外接单元601一一对应。仲裁器705判断消息的优先级,消息的优先级可以同发送消息的外接单元601的优先级。仲裁器705按照优先级由高到低的顺序处理各消息,如果是读命令或读数据的消息,则将该消息转给读模块703,如果是写命令或者写数据,则将该消息转给写模块702,如果是需要进行宏块处理的数据,如需要编码或解码的数据,则先将该数据的地址发送给变换模块701进行地址变换,再由变换模块701将变换后的地址发送给写模块702或读模块703。
本发明实施例通过将宏块的数据存储到存储器中的一行,则在读写一个宏块的数据时最多一次开关操作,节省了对存储器行的开关操作的次数,从而提高了读写效率,对于视频数据的读写效率有明显提高,进而提高视频处理效率及整个设备的运行效率。并且减少开关操作还可以延长存储器的使用寿命和降低功耗。本发明实施例还将宏块式的数据和非宏块式的数据存储到不同的存储块,以适应不同的外接单元的需要,进一步提高设备的整体工作效率。以及,本发明实施例根据图像宽度和存储块中行的长度确定地址间隔,从而简化地址转换的复杂度。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (11)
1.一种访问存储器的方法,其特征在于,包括以下步骤:
通过变换行列地址的方式,对收到的以宏块方式进行处理的图像数据进行地址变换,变换前的地址是根据图像的宽度和存储器中存储块行的长度确定的;其中,根据公式:New Row Address={Row Address[RMSB:A],ColumnAddress[B-1:C],Row Address[D-1:0]},New Column Address={ColumnAddress[CMSB:B],Row Address[A-1:D],Column Address[C-1:0]},对收到的以宏块方式进行处理的图像数据进行地址变换;
其中,New Row Address为变换后的行地址,Row Address[RMSB:A]为变换前地址位为[RMSB:A]的行地址,Column Address[B-1:C]为变换前地址位为[B-1:C]的列地址,Row Address[D-1:0]为变换前地址位为[D-1:0]的行地址,Column Address[CMSB:B]为变换前地址位为[CMSB:B]的列地址,RowAddress[A-1:D]为变换前地址位为[A-1:D]的行地址,Column Address[C-1:0]为变换前地址位为[C-1:0]的列地址;RMSB表示行地址的最高位,CMSB表示列地址的最高位,A、B、C和D为预设的参数,B-C=A-D=以2为底宏块行数的对数;B=CMSB或CMSB+1,D=0;或者B=CMSB或CMSB+1,D=1;
根据变换后的地址将一个宏块的图像数据存储到存储器中存储块的一行。
2.如权利要求1所述的方法,其特征在于,根据图像宽度和存储器中存储块行的长度确定变换前的地址,具体为:
当图像宽度小于行的长度时,两行图像的第一个像素点变换前的地址相距1倍行的长度;
当图像宽度大于行的长度且不大于1.5倍行的长度时,两行图像的第一个像素点变换前的地址相距1.5倍行的长度;
当图像宽度大于1.5倍行的长度且不大于2倍行的长度时,两行图像的第一个像素点变换前的地址相距2倍行的长度;
当图像宽度大于2倍行的长度时,两行图像的第一个像素点变换前的地址相距的倍数是图像宽度与行的长度的比值再向上取整所得到的整数。
3.如权利要求1所述的方法,其特征在于,根据变换后的地址将一个宏块的图像数据存储到一行的步骤包括:根据变换后的地址将一个宏块的图像数据存储到第一存储块中的一行;
所述方法还包括步骤:将收到的以非宏块方式进行处理的图像数据存储到第二存储块。
4.如权利要求1至3中任一项所述的方法,其特征在于,根据变换后的地址将一个宏块的图像数据存储到存储器中存储块的一行之后,还包括步骤:以行的方式读取存储的图像数据。
5.如权利要求4所述的方法,其特征在于,以行的方式读取存储的图像数据的步骤包括:接收外接单元发送的地址;根据发送地址的外接单元的类型确定是否需要进行地址变换;如果需要,则对地址进行变换,并根据变换后的地址读取图像数据;如果不需要,则根据收到的地址读取图像数据。
6.一种用于访问存储器的装置,其特征在于,包括:
变换模块,用于通过变换行列地址的方式,对收到的以宏块方式进行处理的图像数据进行地址变换,变换前的地址是根据图像宽度和存储器中存储块行的长度确定的;其中,根据公式:New RowAddress={RowAddress[RMSB:A],Column Address[B-1:C],Row Address[D-1:0]},New Column Address={ColumnAddress[CMSB:B],Row Address[A-1:D],Column Address[C-1:0]},对收到的以宏块方式进行处理的图像数据进行地址变换;
其中,New Row Address为变换后的行地址,Row Address[RMSB:A]为变换前地址位为[RMSB:A]的行地址,Column Address[B-1:C]为变换前地址位为[B-1:C]的列地址,Row Address[D-1:0]为变换前地址位为[D-1:0]的行地址,Column Address[CMSB:B]为变换前地址位为[CMSB:B]的列地址,RowAddress[A-1:D]为变换前地址位为[A-1:D]的行地址,Column Address[C-1:0]为变换前地址位为[C-1:0]的列地址;RMSB表示行地址的最高位,CMSB表示列地址的最高位,A、B、C和D为预设的参数,B-C=A-D=以2为底宏块行数的对数;
写模块,用于根据变换后的地址将一个宏块的图像数据存储到所述存储器中存储块的一行。
7.如权利要求6所述的装置,其特征在于,写模块根据变换后的地址将一个宏块的图像数据存储到第一存储块中的一行,以及将收到的以非宏块方式进行处理的图像数据存储到第二存储块。
8.如权利要求6或7所述的装置,其特征在于,还包括:读模块,用于以行的方式读取存储的图像数据。
9.如权利要求8所述的装置,其特征在于,还包括:
缓冲器,用于接收外接单元发送的地址;
仲裁器,用于根据发送地址的外接单元的类型确定是否需要进行地址变换;如果需要,则将收到的地址发送给变换模块,指示变换模块对地址进行变换;如果不需要,则将收到的地址发送给读模块,指示读模块根据收到的地址读取图像数据。
10.一种数据处理设备,其特征在于,包括:
外接单元,用于根据图像宽度和存储器中存储块行的长度获得地址间隔和图像数据的地址,并将图像数据和图像数据的地址发送给控制器,以及指示控制器读取所述图像数据并接收控制器发送的图像数据;
控制器,包括:变换模块,用于通过变换行列地址的方式对收到的以宏块方式进行处理的图像数据进行地址变换;写模块,用于根据变换后的地址将一个宏块的图像数据存储到存储器中存储块的一行;其中,控制器根据公式:NewRow Address={Row Address[RMSB:A],Column Address[B-1:C],RowAddress[D-1:0]},New Column Address={Column Address[CMSB:B],RowAddress[A-1:D],Column Address[C-1:0]},对收到的需要以宏块方式进行处理的图像数据进行地址变换;
其中,New Row Address为变换后的行地址,Row Address[RMSB:A]为变换前地址位为[RMSB:A]的行地址,Column Address[B-1:C]为变换前地址位为[B-1:C]的列地址,Row Address[D-1:0]为变换前地址位为[D-1:0]的行地址,Column Address[CMSB:B]为变换前地址位为[CMSB:B]的列地址,RowAddress[A-1:D]为变换前地址位为[A-1:D]的行地址,Column Address[C-1:0]为变换前地址位为[C-1:0]的列地址;RMSB表示行地址的最高位,CMSB表示列地址的最高位,A、B、C和D为预设的参数,B-C=A-D=以2为底宏块行数的对数;
存储器,用于存储所述图像数据。
11.如权利要求10所述的数据处理设备,其特征在于,控制器还用于根据外接单元的指示以行的方式从存储器中读取存储的图像数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010549131 CN101996142B (zh) | 2010-11-17 | 2010-11-17 | 一种访问存储器的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010549131 CN101996142B (zh) | 2010-11-17 | 2010-11-17 | 一种访问存储器的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101996142A CN101996142A (zh) | 2011-03-30 |
CN101996142B true CN101996142B (zh) | 2013-01-02 |
Family
ID=43786317
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010549131 Active CN101996142B (zh) | 2010-11-17 | 2010-11-17 | 一种访问存储器的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101996142B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2543736B (en) * | 2015-09-10 | 2019-03-27 | Advanced Risc Mach Ltd | An interface apparatus and method of operating an interface apparatus |
CN108257582B (zh) * | 2018-01-30 | 2020-10-09 | 广东中星微电子有限公司 | 一种图像的显示缓冲方法和装置 |
CN111831212B (zh) * | 2019-04-19 | 2023-07-04 | 杭州海康威视数字技术股份有限公司 | 一种数据写入、读取方法、装置及设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1150739A (zh) * | 1995-07-31 | 1997-05-28 | 三星电子株式会社 | 帧存储器以及在sdram中记录帧图象信号的方法 |
CN1253453A (zh) * | 1998-05-28 | 2000-05-17 | 松下电器产业株式会社 | 用于美国高级电视制式委员会视频解码器的存储控制器 |
CN1314050A (zh) * | 1999-04-13 | 2001-09-19 | 索尼公司 | 视频处理装置和方法及介质 |
CN1905677A (zh) * | 2006-08-07 | 2007-01-31 | 清华大学 | 可变块大小运动补偿的数据缓存方法及其实现装置 |
CN1942870A (zh) * | 2004-04-15 | 2007-04-04 | 松下电器产业株式会社 | 对矩形区域的突发存储器访问的方法 |
-
2010
- 2010-11-17 CN CN 201010549131 patent/CN101996142B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1150739A (zh) * | 1995-07-31 | 1997-05-28 | 三星电子株式会社 | 帧存储器以及在sdram中记录帧图象信号的方法 |
CN1253453A (zh) * | 1998-05-28 | 2000-05-17 | 松下电器产业株式会社 | 用于美国高级电视制式委员会视频解码器的存储控制器 |
CN1314050A (zh) * | 1999-04-13 | 2001-09-19 | 索尼公司 | 视频处理装置和方法及介质 |
CN1942870A (zh) * | 2004-04-15 | 2007-04-04 | 松下电器产业株式会社 | 对矩形区域的突发存储器访问的方法 |
CN1905677A (zh) * | 2006-08-07 | 2007-01-31 | 清华大学 | 可变块大小运动补偿的数据缓存方法及其实现装置 |
Non-Patent Citations (2)
Title |
---|
Hansoo Kim.Array address translation for SDRAM-based video processing applications.《ELECTRONICS LETTERS》.1999,第35卷(第22期), * |
Hansoo Kim.High-Performance and Low-Power Memory-Interface Architecture for Video Processing Applications.《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》.2001,第11卷(第11期), * |
Also Published As
Publication number | Publication date |
---|---|
CN101996142A (zh) | 2011-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102870089B (zh) | 将数据存储到虚拟高速存储系统中的系统和方法 | |
US20140359225A1 (en) | Multi-core processor and multi-core processor system | |
CN103279309B (zh) | 基于fpga的ddr控制装置及方法 | |
CN106846255B (zh) | 图像旋转实现方法及装置 | |
CN101379472A (zh) | 通过在装置不活动周期期间停用dram的未使用部分的刷新来减小功率消耗 | |
CN107077882A (zh) | 一种dram刷新方法、装置和系统 | |
CN116010299B (zh) | 一种数据处理方法、装置、设备及可读存储介质 | |
CN103760525A (zh) | 一种补齐式原地矩阵转置方法 | |
CN102176750A (zh) | 高性能自适应二进制算术编码器 | |
CN101996142B (zh) | 一种访问存储器的方法及装置 | |
CN101212680B (zh) | 图像数据的存储器存取方法及系统 | |
CN101504632A (zh) | 一种dma数据传输方法、系统及一种dma控制器 | |
JP5865696B2 (ja) | 画像処理装置 | |
CN102118304B (zh) | 一种信元交换方法和装置 | |
CN103034455B (zh) | 基于预先解码分析的数据信息缓存管理方法及系统 | |
CN202995701U (zh) | 基于预先解码分析的数据信息缓存管理系统 | |
CN102880341A (zh) | 触摸屏数据处理系统、方法及专用alu | |
CN101556556B (zh) | 一种数据存储方法及装置 | |
CN101662684A (zh) | 用于视频图像编解码的数据存储的方法及装置 | |
CN1319276C (zh) | 一种减小在线图像压缩数据缓冲区大小的缓冲区读写方法 | |
CN101303668A (zh) | 一种数据转置的方法和系统 | |
CN105163123B (zh) | 一种hevc帧间预测子块mv信息的存取方法和装置 | |
CN100366068C (zh) | 一种节省存储空间的存储处理方法 | |
CN105551456A (zh) | 一种基于图像旋转显示的ddr2分块存储方法 | |
CN101615421B (zh) | 多信道混合密度内存储存装置及其控制方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address | ||
CP03 | Change of name, title or address |
Address after: No.701, 7th floor, No.10, Huayuan East Road, Haidian District, Beijing Patentee after: Beijing Juli North Microelectronics Co.,Ltd. Address before: 100083 room 27, No. 1601, Haidian District, Beijing, Zhichun Road Patentee before: BEIJING ACTIONS MICROELECTRONICS Co.,Ltd. |