端序处理方法、电路、芯片以及电子终端
文献发布时间:2023-06-19 11:05:16
技术领域
本申请实施例涉及电路技术领域,尤其涉及一种端序处理方法、电路、芯片以及电子终端。
背景技术
在各种应用场景中,比如智能手环/手表的刷屏显示,或者大量碎片化访问,芯片上的数据访问单元需要执行端序转换处理从而访问外部存储器以获取目标数据。端序转换处理在数据访问单元基于软件层实现,会导致数据访问单元需要使用额外的指令周期去执行上述端序转换处理,造成了时钟周期的消耗较大。
发明内容
有鉴于此,本申请实施例所解决的技术问题之一在于提供一种端序处理方法、电路、芯片以及电子装置,用以克服或者缓解现有技术中上述缺陷。
第一方面,本申请实施例提供一种端序处理方法,应用于端序处理电路,所述端序处理电路位于数据访问单元外部,所述端序处理电路从存储器获取源数据,所述数据访问单元从所述端序处理电路获取目标数据,所述端序处理方法包括:
确定将所述源数据处理为所述目标数据的端序处理模式;
确定所述数据访问单元获取所述目标数据时的数据访问宽度;
根据所述数据访问宽度以及所述端序处理模式,对所述源数据进行端序处理得到所述目标数据。
可选地,在本申请一实施例中,所述根据所述数据访问宽度以及所述端序处理模式,对所述源数据进行端序处理得到所述目标数据包括:
根据所述数据访问宽度以及所述端序处理模式,确定端序处理逻辑;
根据所述端序处理逻辑,对所述源数据进行端序处理得到所述目标数据。
可选地,在本申请一实施例中,所述端序处理逻辑为4字节端序处理逻辑、2字节端序处理逻辑、单字节端序处理逻辑中至少其一。
可选地,在本申请一实施例中,若所述数据访问单元获取所述目标数据时的数据访问宽度为单字节,则所述端序处理电路从所述存储器获取所述源数据的数据访问宽度为单字节;
且,所述根据所述端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,包括:根据所述单字节端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,以使得所述目标数据的端序与所述源数据的端序相同。
可选地,在本申请一实施例中,若所述数据访问单元获取所述目标数据时的数据访问宽度为2字节,则所述端序处理电路从所述存储器获取所述源数据的数据访问宽度为2字节;
且,所述根据所述端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,包括:根据所述2字节端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,以使得所述目标数据中2个字节之间的端序与所述源数据中2个字节之间端序相同或者相反。
可选地,在本申请一实施例中,若所述数据访问单元获取所述目标数据时的数据访问宽度为4字节,则所述端序处理电路从所述存储器获取所述源数据的数据访问宽度为4字节;
且,所述根据所述端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,包括:根据所述4字节端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,以使得所述目标数据中4个字节之间的端序与所述源数据中4个字节之间端序相同或者相反,或者,以使得所述目标数据中前2个字节之间的端序与所述源数据中前2个字节之间端序相反,以及所述目标数据中后2个字节之间的端序与所述源数据中后2个字节之间端序相反。
可选地,在本申请一实施例中,所述确定将所述源数据处理为所述目标数据的端序处理模式,包括:根据从端序处理模式配置寄存器获取的模式变量值,确定将所述源数据处理为所述目标数据的端序处理模式。
可选地,在本申请一实施例中,所述端序处理模式的数量为多个,对应地,在所述端序处理模式配置寄存器中存储有多个端序处理模式标识,一个所述端序处理模式标识具有一个所述模式变量值,以使得一个所述模式变量值对应一个所述端序处理模式。
可选地,在本申请一实施例中,所述确定将所述源数据处理为所述目标数据的端序处理模式,之前包括:根据端序处理配置数据,在所述端序处理模式配置寄存器中配置每个所述端序处理模式对应的所述模式变量值。
可选地,在本申请一实施例中,所述端序处理模式配置寄存器配置在所述数据访问单元上。
可选地,在本申请一实施例中,所述存储器为支持4线工作模式的串行外设接口的存储器,通过所述串行外设接口将所述源数据传输给所述端序处理电路。
可选地,在本申请一实施例中,所述确定将所述源数据处理为所述目标数据的端序处理模式之前包括:判断所述存储器是否处于内存映射模式,若是,则确定将所述源数据处理为所述目标数据的端序处理模式。
可选地,在本申请一实施例中,所述数据访问单元包括中央处理器、微控制单元、直接存储器访问控制器中至少其一。
第二方面,本申请实施例提供一种端序处理电路,所述端序处理电路位于数据访问单元外部,所述端序处理电路从存储器获取源数据,所述数据访问单元从所述端序处理电路获取目标数据,所述端序处理电路用于执行本申请任一实施例所述的端序处理方法以对所述源数据进行端序处理得到所述目标数据。
第三方面,本申请实施例提供一种芯片,其包括:端序处理电路以及数据访问单元,所述端序处理电路位于所述数据访问单元外部,所述端序处理电路从存储器获取源数据,所述数据访问单元从所述端序处理电路获取目标数据,所述端序处理电路用于执行本申请任一实施例所述的端序处理方法以对所述源数据进行端序处理得到所述目标数据。
第四方面,本申请实施例提供一种电子终端,其包括本申请任一实施例所述的芯片。
本申请实施例提供的端序处理方案中,应用于端序处理电路,所述端序处理电路位于数据访问单元外部,所述端序处理电路从存储设备获取源数据,所述数据访问单元从所述端序处理电路获取目标数据,所述端序处理方法包括:
确定将所述源数据处理为所述目标数据的端序处理模式;确定所述数据访问单元获取所述目标数据时的数据访问宽度;根据所述数据访问宽度以及所述端序处理模式,对所述源数据进行端序处理得到所述目标数据,即在数据访问单元之外的端序处理电路上进行端序处理,从而无须数据访问单元使用额外的时钟周期去执行端序处理,从而减少了数据访问单元的时钟周期的消耗。
附图说明
后文将参照附图以示例性而非限制性的方式详细描述本申请实施例的一些具体实施例。附图中相同的附图标记标示了相同或类似的部件或部分。本领域技术人员应所述理解,这些附图未必是按比例绘制的。附图中:
图1为本申请实施例的一应用场景的示意图;
图2为本申请实施例端序处理方法流程示意图;
图3为本申请实施例端序处理的流程示意图;
图4为本申请实施例的另一应用场景示意图;
图5为本申请针对上述图4应用场景的端序处理方法的流程示意图。
具体实施方式
实施本申请实施例的任一技术方案必不一定需要同时达到以上的所有优点。
为了使本领域的人员更好地理解本申请实施例中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请实施例一部分实施例,而不是全部的实施例。基于本申请实施例中的实施例,本领域普通技术人员所获取的所有其他实施例,都应当属于本申请实施例保护的范围。
下面结合本申请实施例附图进一步说明本申请实施例的具体实现。
图1为本申请实施例的一应用场景的示意图;如图1所示,在该应用场景中,电子终端包括芯片以及存储器,所述芯片包括数据访问单元、端序处理电路,其中,所述端序处理电路位于所述数据访问单元外部,所述端序处理电路从所述存储器获取源数据,并对其进行端序处理得到目标数据,所述数据访问单元从所述端序处理电路获取所述目标数据。
可选地,在一具体应用中,所述数据访问单元可以为CPU(中央处理器,CentralProcessing Unit)、MCU(微控制单元,Microcontroller Unit)或者DMA(直接存储器访问,Direct Memory Access)控制器。
可选地,在一具体应用中,所述存储器比如为FLASH设备,该FLASH设备比如具体为支持4线工作模式的串行外设接口的存储器,或者又称之为QSPI(Quad Serial PeripheralInterface,4线工作模式的串行外设接口)存储器。
本实施例中,所述端序主要表示存储数据的字节顺序。所述端序又可以称之字节序、尾序、位序。所述端序可以包括大端序(Big-Endian,又称之大尾序)和小端序(Little-Endian,又称之小尾序)。在大端序中,高位字节放在内存的低地址,低位字节放在内存的高地址。在小端序中,低位字节放在内存的低地址,高位字节放在内存的高地址。
在一具体应用中,所述端序处理电路比如为通过硬件编程语言(VHDL、Verilog等)生成的电路,其具体可以为SoC(System-on-a-Chip,片上系统)芯片。
在一具体应用中,所述源数据不做特别限定,可以是任意数据,比如为像素数据或者图片数据或者字模数据。
可选地,在一具体应用中,所述数据访问宽度为8比特的N倍,所述N≥1,比如为8比特(相当于一个字节的宽度,简称单字节),16比特(即2个字节的宽度,相当于半个字的宽度,或者又称为半字),32比特(即4个字节的宽度,相当于一个字的宽度,或者又称为单字)等。此处需要说明的是,此处,具体数值的所述数据访问宽度仅仅是示例,并非唯一性限定。
图2为本申请实施例端序处理方法流程示意图;如图2所示,所述端序处理方法包括:
S201、确定将所述源数据处理为所述目标数据的端序处理模式;
可选地,在一具体应用中,所述步骤S201可以具体包括:根据从端序处理模式配置寄存器获取的模式变量值,确定将所述源数据处理为所述目标数据的端序处理模式。可选地,在一具体应用中,所述端序处理模式的数量为多个,对应地,在所述端序处理模式配置寄存器中存储有多个端序处理模式标识,一个所述端序处理模式标识具有一个所述模式变量值,以使得一个所述模式变量值对应一个所述端序处理模式,从而使得不同端序处理模式对应的模式变量值之间形成互斥关系,可快速地实现端序处理模式的切换。
比如,假如端序处理模式共计有三个,分别为Mode 0、Mode 1、Mode 2,如果获取的模式变量值为0,则确定所述端序处理模式为Mode 0;如果获取到的模式变量值为1,则确定所述端序处理模式为Mode 1,如果该模式变量值为2,则确定所述端序处理模式为Mode 2。具体地,在所述端序处理模式配置寄存器中存储有3个端序处理模式标识xip_mode_endian_type_0、xip_mode_endian_type_1、xip_mode_endian_type_2,当xip_mode_endian_type_0的模式变量值为0时,则认为xip_mode_endian_type_0为真,则对应端序处理模式为Mode 0,相反地,当xip_mode_endian_type_0的模式变量值为其他值时,则认为xip_mode_endian_type_0为假,则对应端序处理模式并非为Mode 0;当xip_mode_endian_type_1的模式变量值为1时,则认为xip_mode_endian_type_1为真,则对应端序处理模式为Mode 1,相反地,当xip_mode_endian_type_1的模式变量值为其他值时,则认为xip_mode_endian_type_1为假,则对应端序处理模式并非为Mode 1;当xip_mode_endian_type_2的模式变量值为2时,则认为xip_mode_endian_type_2为真,则对应端序处理模式为Mode 2,相反地,当xip_mode_endian_type_2的模式变量值为其他值时,则认为xip_mode_endian_type_2为假,则对应端序处理模式并非为Mode2。由此可见可见,xip_mode_endian_type_0的模式变量值为0、xip_mode_endian_type_1的模式变量值为1、xip_mode_endian_type_2的模式变量值为2形成互斥的关系,从而可便于在端序处理模式Mode0、端序处理模式Mode1、端序处理模式Mode2之间快速、便捷地切换。可选地,在一具体应用中,所述端序处理模式配置寄存器配置在所述数据访问单元上,从而便于所述数据访问单元快速地从端序处理模式配置寄存器获取模式变量值并将其发送给所述端序处理电路,使得所述端序处理电路根据模式变量值确定将所述源数据处理为所述目标数据的端序处理模式,相当于搭建了所述数据访问单元与所述端序处理电路之间进行数据交互的快速入口。
比如,当所述数据访问单元为CPU时,所述端序处理模式配置寄存器配置在所述CPU上;当所述数据访问单元为MCU时,所述端序处理模式配置寄存器配置在所述MCU上,从而搭建了所述CPU与所述端序处理电路之间进行数据交互的快速入口。
可选地,在一具体应用中,所述确定将所述源数据处理为所述目标数据的端序处理模式,之前包括:根据端序处理配置数据,在端序处理模式配置寄存器中配置每个所述端序处理模式对应的所述模式变量值,从而便于通过改变端序处理模式配置寄存器中的所述模式变量值,即可适用于不同应用场景中具体的端序处理模式,或者,在同一应用场景中根据数据访问单元对数据需求的不同阶段实现端序处理模式的快速切换。
比如,配置xip_mode_endian_type_0的模式变量值为0时,则认为xip_mode_endian_type_0为真,则对应端序处理模式为Mode0;当需要从Mode0切换到Mode 1时,修改xip_mode_endian_type_0的模式变量值为非0,同时修改xip_mode_endian_type_1的模式变量值为1,则认为xip_mode_endian_type_1为真,则对应端序处理模式为Mode 1,从而实现了从Mode 0到Mode 1的快速切换。
S202、确定所述数据访问单元获取所述目标数据时的数据访问宽度;
S203、根据所述数据访问宽度以及所述端序处理模式,对所述源数据进行端序处理得到具有所述目标端序的所述目标数据。
可选地,在一具体应用中,所述存储器为QSPI存储器,以及端序处理电路通过AHB(Advanced High-performance Bus,先进的高性能总线)从所述QSPI存储器获取源数据。
具体地,图3为本申请实施例端序处理的流程示意图;如图3所示,步骤S203可以包括:
S213、根据所述数据访问宽度以及所述端序处理模式,确定端序处理逻辑;
可选地,在一具体应用中,所述端序处理逻辑包括4字节端序处理逻辑、2字节端序处理逻辑、单字节端序处理逻辑中至少其一,以分别对应所述数据访问宽度为8比特、16比特、32比特时将所述源数据进行端序处理得到满足所述数据访问单元获取目标数据的要求,比如,当CPU基于ARM结构时,可以有效地满足CPU的绝大多数应用场景,只需要配置一次即可适用于绝大数的应用场景,节省了端序处理的设计成本。
S223、根据所述端序处理逻辑,对所述源数据进行端序处理得到所述目标数据。
可选地,在一具体应用中,若所述数据访问单元获取所述目标数据时的数据访问宽度为单字节,则所述端序处理电路从所述存储器获取所述源数据的数据访问宽度为单字节,从而保证端序处理电路每次从存储器读取到的源数据的位宽为单字节,以及数据访问单元从端序处理电路读取到目标数据的位宽为单字节,即相当于端序处理电路读取源数据和数据访问单元读取目标数据的位宽相同,从而避免了数据访问宽度的浪费。
进一步地,所述根据所述端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,包括:根据所述单字节端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,以使得所述目标数据的端序与所述源数据的端序相同。比如,在对所述源数据进行端序处理时,保持所述源数据的端序不变,使得所述目标数据的端序与所述源数据的端序相同,或者,又称为将所述源数据按照源序输出。若所述源数据的端序为大端序,则所述目标数据的端序也为大端序;若所述源数据的端序为小端序,则所述目标数据的端序也为小端序。具体地,端序处理电路从存储器某次读取到的源数据为AA,则参与一次端序处理的源数据为AA(即对应数据访问宽度为单字节),端序处理后得到的所述目标数据同样为AA。若下一次端序处理的源数据为BB,端序处理后得到的所述目标数据同样为BB。
可选地,在一具体应用中,若所述数据访问单元获取所述目标数据时的数据访问宽度为2字节,则所述端序处理电路从所述存储器获取所述源数据的数据访问宽度为2字节,从而保证端序处理电路每次从存储器读取到的源数据的位宽为2字节,以及数据访问单元从端序处理电路读取到目标数据的位宽为2字节,即相当于端序处理电路读取源数据和数据访问单元读取目标数据的位宽相同,从而避免了数据访问宽度的浪费。
进一步地,所述根据所述端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,包括:根据所述2字节端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,以使得所述目标数据中2个字节之间的端序与所述源数据中2个字节之间端序相同或者相反。比如,在对所述源数据进行端序处理时,保持所述源数据的端序不变,使得所述目标数据的端序与所述源数据的端序相同,或者,又称为将所述源数据按照源序输出。若所述源数据的端序为大端序,则所述目标数据的端序也为大端序;若所述源数据的端序为小端序,则所述目标数据的端序也为小端序。具体地,端序处理电路从存储器某次读取到的源数据为AABB,即对应数据访问宽度为2字节,则参与一次端序处理的源数据为AABB,端序处理后得到的所述目标数据同样为AABB;若下一次端序处理的源数据为CCDD,端序处理后得到的所述目标数据同样为CCDD;由此可见,源数据和目标数据的端序相同。或者,再比如,在对所述源数据进行端序处理时,对所述源数据的端序进行逆序处理(或者又称之端序转换),使得所述目标数据的端序与所述源数据的端序相反,或者,又称为将所述源数据按照逆序输出。若所述源数据的端序为大端序,则所述目标数据的端序为小端序;若所述源数据的端序为小端序,则所述目标数据的端序为大端序。具体地,端序处理电路从存储器某次读取到的源数据为AABB,则参与一次端序处理的源数据为AABB,端序处理后得到的所述目标数据为BBAA;若下一次端序处理的源数据为CCDD,端序处理后得到的所述目标数据为DDCC,由此可见,源数据和目标数据的端序相反。
可选地,在一具体应用中,若所述数据访问单元获取所述目标数据时的数据访问宽度为4字节,则所述端序处理电路从所述存储器获取所述源数据的数据访问宽度为4字节,从而保证端序处理电路每次从存储器读取到的源数据的位宽为4字节,以及数据访问单元从端序处理电路读取到目标数据的位宽为4字节,即相当于端序处理电路读取源数据和数据访问单元读取目标数据的位宽相同,从而避免了数据访问宽度的浪费。
进一步地,所述根据所述端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,包括:根据所述4字节端序处理逻辑,对所述源数据进行端序处理得到所述目标数据,以使得所述目标数据中4个字节之间的端序与所述源数据中4个字节之间端序相同或者相反,或者,以使得所述目标数据中前2个字节之间的端序与所述源数据中前2个字节之间端序相反,以及所述目标数据中后2个字节之间的端序与所述源数据中后2个字节之间端序相反。比如,在对所述源数据进行端序处理时,保持所述源数据的端序不变,使得所述目标数据的端序与所述源数据的端序相同,或者,又称为将所述源数据按照源序输出。若所述源数据的端序为大端序,则所述目标数据的端序也为大端序;若所述源数据的端序为小端序,则所述目标数据的端序也为小端序。具体地,端序处理电路从存储器某次读取到的源数据为AABBCCDD(即对应数据访问宽度为4字节),则参与一次端序处理的源数据为AABBCCDD,端序处理后得到的所述目标数据同样为AABBCCDD;若下一次端序处理的源数据为EEFFGGHH,端序处理后得到的所述目标数据同样为EEFFGGHH;由此可见,源数据和目标数据的端序相同。或者,再比如,在对所述源数据进行端序处理时,对所述源数据的端序进行逆序处理,使得所述目标数据的端序与所述源数据的端序相反,或者,又称为将所述源数据按照逆序输出。若所述源数据的端序为大端序,则所述目标数据的端序为小端序;若所述源数据的端序为小端序,则所述目标数据的端序为大端序。具体地,端序处理电路从存储器某次读取到的源数据为AABBCCDD(即对应数据访问宽度为4字节),则参与一次端序处理的源数据为AABBCCDD,端序处理后得到的所述目标数据为DDCCBBAA;若下一次端序处理的源数据为EEFFGGHH,端序处理后得到的所述目标数据为HHGGFFEE,由此可见,源数据和目标数据的端序相反。再或者,具体地,端序处理电路从存储器某次读取到的源数据为AABBCCDD(即对应数据访问宽度为4字节),则参与一次端序处理的源数据为AABBCCDD,端序处理后得到的所述目标数据为BBAADDCC;若下一次端序处理的源数据为EEFFGGHH,端序处理后得到的所述目标数据同样为FFEEHHGG,由此可见,所述目标数据中前2个字节之间的端序与所述源数据中前2个字节之间端序相反,以及所述目标数据中后2个字节之间的端序与所述源数据中后2个字节之间端序相反。
图4为本申请实施例的另一应用场景示意图;如图4所示,在本实施例中,以所述存储器为QSPI存储器为例,为此,芯片除了包括数据访问单元、端序处理电路外,还包括QSPI控制器,因此,所述端序处理电路优选设置在所述QSPI控制器中,从而降低电路设计的难度。另外,图4中通过AHB传输源数据以及目标数据,且上述端序处理模式配置寄存器设置在所述数据访问单元上,且端序处理配置表存储在所述数据访问单元上。另外,如前所述,所述端序处理模式有三种,分别记为Mode0(比如又称之为第一端序处理模式)、Mode1(比如又称之为第二端序处理模式)、Mode2(比如又称之为第三端序处理模式)为例进行说明,端序处理模式详见下述表二。
图5为本申请针对上述图4应用场景的端序处理方法的流程示意图;如图5所示,其包括:
S501、根据端序处理配置数据,在端序处理模式配置寄存器中配置每个所述端序处理模式对应的所述模式变量值,以及各个端序处理模式对应的端序处理逻辑;
本实施例中,所述源数据在QSPI中的方式如表一所示。
表一
在表一中,offset address表示偏移地址,Saved data表示各个偏移地址中存储的源数据,在每个偏移地址中存储的数据位宽为8比特。
本实施例中,所述端序处理配置数据具体可以通过端序处理配置表来体现,如表二所示。
表二
在表二中,AHB Size表示数据访问宽度,HSIZE为表示数据访问宽度的变量,如果该变量为8,则表示数据访问宽度为8比特(即单字节),如果该变量为16(即2字节),则表示数据访问宽度为16比特,如果该变量为32(即4字节),则表示数据访问宽度为32比特。0x00000000、0x00000001、0x00000002、0x00000003表示对齐地址,该对齐地址用于实现数据位的对齐,即对齐单字节数据的数据位、2字节数据的数据位、4字节数据的数据位。数据访问宽度为8比特,则该对齐地址为0x00000000、0x00000001、0x00000002、0x00000003;数据访问宽度为16比特,则该对齐地址为0x00000000、0x00000002;数据访问宽度为32比特,则该对齐地址为0x00000000、0x00000004。
再参见上述表二可见,若数据访问宽度为单字节(即HSIZE=8),则在对源数据进行端序处理时,对于端序处理模式Mode0、Mode1、Mode2对应的端序处理逻辑均为单字节端序处理逻辑;若数据访问宽度为2字节(即HSIZE=16),则在对源数据进行端序处理时,对于端序处理模式Mode0、Mode1、Mode2对应的端序处理逻辑为2字节端序处理逻辑;若数据访问宽度为单字(即HSIZE=32),则在对源数据进行端序处理时,对于端序处理模式Mode0、Mode1、Mode2对应的端序处理逻辑为4字节端序处理逻辑。具体地,端序处理逻辑示例详见上述实施例记载。
S502、判断所述存储器是否处于内存映射模式;
本实施例中,数据访问单元、端序处理电路、QSPI存储器均通过AHB连接,为了实现数据传输,存储器可以处于存储映射模式,以实现将QSPI存储器的物理地址空间映射到AHB上,以使得所述端序处理电路可以从所述QSPI存储器读取源数据。
若是,则执行步骤S503,否则,结束。此处,在其他实施例中,若判定所述存储器未处于内存映射模式时,可以重新返回到步骤S502进行重新判断,直至存储器处于内存映射模式。
S503、根据从端序处理模式配置寄存器获取的模式变量值,确定将所述源数据处理为所述目标数据的端序处理模式;
本实施例中,端序处理模式配置寄存器中提供2比特来配置所述模式变量值,比如,如果该模式变量值为0,表示端序处理模式为Mode 0;如果该模式变量值为1,表示端序处理模式为Mode 1,如果该模式变量值为2,表示端序处理模式为Mode 2。
在所述端序处理模式配置寄存器中存储有3个端序处理模式标识xip_mode_endian_type_0、xip_mode_endian_type_1、xip_mode_endian_type_2,如前所述,每个所述端序处理模式标识具有一个所述模式变量值,以使得一个所述模式变量值对应一个所述端序处理模式。当模式变量值分别为0、1、2时,xip_mode_endian_type_0、xip_mode_endian_type_1、xip_mode_endian_type_2分别为真,即表示端序处理模式分别为Mode0、Mode1、Mode2。
在其他实施例中,也可以将Mode0设置为默认的端序处理模式。当不存在等于1和2的模式变量值时,则表明端序处理模式为默认的端序处理模式Mode0,当存在等于1或者2的模式变量值时,表明端序处理模式并非为默认的端序处理模式Mode0,实际上为端序处理模式Mode1或者Mode2。
S504、确定所述数据访问单元获取所述目标数据时的数据访问宽度;
可选地,在一具体应用中,为不同的数据访问宽度配置了不同的数据访问宽度标识,即数据访问宽度标识之间是互斥的,从而根据数据访问宽度标识的值即可快速地确定出所述数据访问宽度。比如,如果数据访问宽度为8比特、16比特、32比特,则配置的数据访问宽度标识比如分别为hsize_byte、hsize_half_word、hsize_word,如果hsize_byte=1,则表示数据访问宽度为8比特,即单字节;如果hsize_half_word=1,则表示数据访问宽度为16比特,即半字;如果hsize_word=1,则表示数据访问宽度为32比特,即单字。
S505、根据所述数据访问宽度以及所述端序处理模式,确定端序处理逻辑;
本实施例中,有关端序处理逻辑的描述详见上述实施例记载。
S506、根据所述端序处理逻辑,对所述源数据进行端序处理得到所述目标数据;
本实施例中,有关步骤S506的详细描述可参见上述实施例的记载。上述实施例中,可以通过寄存器指令修改模式变量值,从而实现端序处理模式的灵活、便捷切换,满足各种应用场景的需求。
此处需要说明的是,上述端序处理配置数据的具体数值仅仅是示例,并非唯一性限定。比如数据访问宽度还可以是64比特,128比特等。所述端序处理模式也可以超过3种,从而可以在同一张端序配置数据表中实现各种可能的端序处理模式、端序处理逻辑的配置,以在各种场景中进行灵活切换,降低了端序处理设计的成本。
另外,上述实施例中,仅仅以一个存储器为例进行说明,但是此处说明的是,对于存储器的数量和类型没有限制,即一个数据访问单元可以访问多个相同或者不同类型的存储器,比如QSPI存储器、PSRAM(Pseudo static randomaccess memory,伪静态随机存储器)。
以下以在一个典型场景中的应用为例,对本申请的方案给时钟消耗的大幅减少进行说明。
比如针对智能手环/手表的刷屏,刷屏使用的图片存储在QSPI存储器中,端序处理电路对源数据完成端序处理后直接传输到屏幕进行显示,相当于P2P传输,可以使得产品的设计方案和软件架构变得更加简洁,降低了用户的开发难度和开发成本,另外,使得CPU的数据计算和刷屏处理能力变得更加强大。假设屏幕的长度宽度色彩深度为454*454*16bits,由于8bits=1Byte,1屏幕的数据量为412232Bytes。
若QSPI存储器的工作频率为48Mhz,其在4线工作模式(即每个SCLK传输4bits,即每字节耗费2个时钟周期(又称之为2SCLK),则最大的理论极限速度为48*4/8=24MByte/Sec。
另外,假设端序处理电路从QSPI存储器读取源数据时,读取1字节数据称之为1beat数据,耗费2个SCLK。
另外,在读取源数据时,除了要耗费上述2SCLK外,若端序处理电路按照SIOO(SentInstruction Only Once,只发一次读取指令)模式从所述QSPI存储器读取源数据时并进行端序处理,整个时钟消耗包括:OVERHEAD时钟消耗(又称之为间接时钟消耗)以及读取数据消耗(又称之为Data Phase消耗),OVERHEAD时钟消耗记为OVERHEAD SLCK,该OVERHEADSLCK的数量总计为14个SCLK,其中,按照时间先后顺序从前到后依次为:2个SCLK(读取指令传输消耗)、6个SCLK(寻址阶段消耗,又称之Address Phase消耗)、6个SCLK(等待阶段消耗,又称之Dummy Phase)。
(1)基于本申请提供的方案,假如HSIZE=8,由于1beat数据为1字节数据,则从QSPI存储器读取4Beat数据的话,即为4字节数据,如前所述,由于读取一字节数据消耗2SCLK,4字节数据的话共计:4*2SCLK=8SCLK,Data Phase的时钟消耗为8SCLK,由于整个过程会消耗:OVERHEAD时钟消耗(14SCLK)与Data Phase消耗(4*2SCLK)的和,共计22SCLK,则:
访问效率为(4*2)/(14+4*2)=36.4%;
HSIZE=8情形下的理论传输速度为24Mbyte/Sec*36.4%=8.73MB/Sec;
传输一屏幕数据的理论消耗时间为:(412232/(1024*1024))*1000/8.73=45ms。
(2)基于本申请提供的方案,假如HSIZE=32,由于1beat数据为4字节数据,则从QSPI存储器读取4Beat数据的话,即为16Byte,如前所述,由于读取一字节数据消耗2SCLK,16字节数据的话共计:16*2SCLK=32SCLK,Data Phase消耗的时钟周期为8SCLK,OVERHEADSLCK为14个SCLK,类似上述HSIZE=8的计算方法,则整个过程会消耗:14SCLK+16*2SCLK=46SCLK,则:
访问效率为(16*2)/(14+2*16)=69.6%;
HSIZE=32情形下的理论传输速度为24Mbyte/Sec*69.6%=16.7MB/Sec;
传输一屏幕数据的理论消耗时间为:(412232/(1024*1024))*1000/16.7=23.5ms;
由此可见,HSIZE=32时的访问效率要高于HSIZE=8时的访问效率,HSIZE=32时传输一屏幕数据的理论消耗时间要比HSIZE=8时传输一屏幕数据的理论消耗时间短。即,数据访问宽度越宽,访问效率越高,传输一屏幕数据的理论消耗时间越短。此处,省略HSIZE=16时的情形。
假如HSIZE=32时基于传统的端序处理方法(即软件层)进行端序处理后再刷屏到屏幕,相对于本申请方案HSIZE=32时实现的情形,传统的端序处理方法完成数据访问的理论消耗时间较多,详细分析如下。
由于传统方案中,从存储器读取的源数据首先要缓存到RAM,而受限于RAM的大小,需要将量存储器中存储的数据分解为N块进行存储。
读入第一块数据到RAM,对该第一块数据进行端序处理得到对应的目标数据并传输到屏幕缓冲区,再在屏幕上进行显示;
以此类推,读入第二块数据、…、第N块,依次进行端序处理分别得到对应的目标数据并传输到屏幕缓冲区,再在屏幕上进行显示,直至完成所有数据块刷入屏幕显示。
由于读取数据时如果以读取4Beat数据的话,共计16Byte。上述完成刷屏的过程可以分解为:读出到RAM、端序处理、写入到屏幕缓存,则:
读出到RAM消耗的时钟周期:14+4*4*2=46SCLK(详细计算参见上述实施例);
软件层进行端序处理消耗的时钟周期:大约2~3个SCLK;
写入到屏幕缓存消耗的时钟周期:4*4*2=32SCLK;
16字节处理完成平均耗时约为80SCLK左右,全屏处理完成大约消耗(412232/16)*80=2061160SCLK。(此处忽略软件层的系统调度、循环处理和调用出入栈时间)。
传输一屏幕数据的最小理论消耗时间为:
2061160/48000000=42.9ms。式中,48000000即QSPI存储器的工作频率48Mhz。
由此可见,该42.9ms远远大于上述23.5ms。换言之,应用本申请的方案之后,手表/手环的刷屏帧率获得了极大提高,使原本滑动可能卡顿的产品不再卡顿,滑动效果变得更加流畅。
由此可见,上述实例中,存在多种端序处理模式,且每种端序处理模式下又可以提供不同的端序处理逻辑,且相应的端序处理在数据访问单元之外的端序处理电路上完成,不再需要数据访问单元浪费额外的时钟周期进行数据端序处理,从而节省了数据访问单元的时钟消耗。另外,由于端序处理装置独立于数据访问单元进行端序处理,无须在数据访问单元上布局进行端序处理的软件代码,一方面节省了数据访问单元的存储空间,另一方面,还降低了数据访问单元的软件设计难度,减少了引入到数据访问单元的BUG。再者,源数据可以直接传输给端序处理电路,无须配置缓冲源数据的RAM,因此,提高了数据访问的速度,以及访问效率。
至此,已经对本主题的特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作可以按照不同的顺序来运行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序,以实现期望的结果。在某些实施方式中,多任务处理和并行处理可以是有利的。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他一实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
- 端序处理方法、电路、芯片以及电子终端
- 充电控制电路、芯片、充电电路、接收端和终端设备