CN101933005B - ***模块寄存器访问方法和装置 - Google Patents

***模块寄存器访问方法和装置 Download PDF

Info

Publication number
CN101933005B
CN101933005B CN200980103655.9A CN200980103655A CN101933005B CN 101933005 B CN101933005 B CN 101933005B CN 200980103655 A CN200980103655 A CN 200980103655A CN 101933005 B CN101933005 B CN 101933005B
Authority
CN
China
Prior art keywords
data
address
bus
write
read
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
Application number
CN200980103655.9A
Other languages
English (en)
Other versions
CN101933005A (zh
Inventor
J·C·咯尔刻罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of CN101933005A publication Critical patent/CN101933005A/zh
Application granted granted Critical
Publication of CN101933005B publication Critical patent/CN101933005B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/24Handling requests for interconnection or transfer for access to input/output bus using interrupt

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Bus Control (AREA)

Abstract

一种电子***(100)的实施例包括处理元件(102),总线控制器(104、120)和***模块(122、123或124)。处理元件执行用于执行处理元件和***模块之间的x位宽的数据值的数据传输的机器可读代码。执行数据传输包括提供对应于***模块的y位宽的数据寄存器的处理元件提供的地址,其中y小于x。总线控制器接收处理元件提供的地址,并且作为响应,执行一系列的与***模块的多个数据传输。这包括提供关于该系列中的第一数据传输的第一***地址,以及提供关于该系列中的至少一个其他的数据传输的至少一个不同的***地址。***模块将第一***地址和至少一个不同的***地址映射到y位宽的数据寄存器。

Description

***模块寄存器访问方法和装置
技术领域
本发明的主题内容的实施例涉及用于访问***模块的寄存器的方法和装置,并且更具体地,涉及用于较高位宽的处理元件访问***模块的较低位宽的数据寄存器的方法和装置。
背景技术
一种典型的处理架构包括适于执行软件指令的处理元件(例如,处理器核心),这些软件指令可以导致处理器核心和***模块的数据寄存器之间的数据传输。在一些情况中,架构可以包括较高位宽的处理器核心和具有较低位宽的数据寄存器的***模块。例如,特定的处理架构可以被设计为包括32位处理器核心,其可以执行用于将32位数据值写入到***模块的8位宽的写入寄存器的软件。在该情况中,软件可以将32位数据值分解为四个8位字节,并且可以执行针对***模块地址的四次连续的均为一字节的写入数据传输。相似地,为了从具有8位宽的读取寄存器的***模块寄存器读取32位数据值,软件可以执行来自***模块地址的四次连续的均为一字节的读取数据传输,并且可以将这四个字节合并以产生32位数据值。
每个访问指令消耗处理器核心周期,并且因此为了在较高位宽的处理器核心和具有较低位宽的数据寄存器的***模块之间传输数据而进行多次访问是固有地低效率的。然而,某些设计参数(例如,关于在新的和较旧的处理器核心上执行的软件的向后兼容性,以及例如,具有较低位宽的数据寄存器的***模块的相对小的物理尺寸)继续迫使架构开发人员将具有较低位宽的数据寄存器的从***模块并入具有较高位宽的处理器核心的处理架构。对于增加处理架构性能的期望,所需要的是如下方法和装置,其在提供关于可以在新的和较旧的处理器核心上执行的软件的向后兼容性的同时,适于实现较高位宽的处理器核心和***模块的较低位宽的数据寄存器之间的更高效的数据传输。
附图说明
图1图示了根据示例性实施例的电子***的简化框图;
图2图示了根据示例性实施例的***模块的简化框图;
图3图示了根据示例性实施例的用于写入***模块的数据寄存器的方法的流程图;
图4图示了根据示例性实施例的用于读取***模块的数据寄存器的方法的流程图;
图5图示了根据示例性实施例的循环冗余校验(CRC)模块的简化框图;以及
图6图示了根据示例性实施例的与生成CRC值结合执行的写入和读取数据传输相关的各种信号的时序图。
具体实施方式
这里描述的实施例包括用于从各种类型的***模块中的数据寄存器读取数据和/或向其写入数据的方法和装置。如下文将详细解释的,对于包含具有y位编程模型资源(例如,数据寄存器)的***模块和x位处理元件(例如,处理器核心)的电子***(例如,芯片)配置,其中x大于y,使用如下实施例可以提高***性能,该实施例包括***模块中的映射到现有的y位编程模型资源的额外的x位编程模型位置。例如,在其中y=8和x=32的***中,根据实施例,通过在***模块的编程模型中包括一个或多个32位位置,可以获得优于传统***的提高的***性能,其中***模块将新的32位位置映射到现有的8位编程模型资源。
各种实施例可以在许多***架构中的任何***架构中实现,并且图1图示了根据特定示例性实施例的电子***100的简化框图。如图1的示例性实施例图示的,用于访问***模块中的数据寄存器的电子***可以包括作为处理元件的处理器核心(例如,处理器核心102)。将理解,其他电子***实施例可以包括其他类型的处理元件,其中“处理元件”可以被定义为适于执行发起处理元件和***模块之间的数据传输的软件指令的可编程硬件模块。例如,处理元件可以是选自如下组的硬件模块,所述组包括:处理器核心、非核心处理元件、直接存储器访问(DMA)单元、和/或可编程且适于执行发起处理元件和***模块之间的数据传输的软件指令的其他硬件模块。因此,尽管这里的附图和描述可能会讨论其中电子***包括处理器核心的实施例,但是将理解,实施例的范围包括具有其他类型的处理元件的电子***。
现在参照图1和特定的示例性实施例,电子***100包括一个或多个处理器核心102(或其他处理元件),一个或多个***总线控制器104,***总线106、107,一个或多个***模块122、123、124,***总线126、中断控制器***模块134、和/或一个或多个存储器块(例如,闪存阵列150和随机存取存储器152)。尽管电子***100被图示为具有单个处理器核心102,但是在其他实施例中电子***可以包括多个处理器核心。此外,尽管图示了三个***模块122~124,但是在其他实施例中电子***可以具有更多或更少的***模块。
在各种实施例中,处理器核心102可以包括例如微控制器、微处理器或数字信号处理器(DSP)核心。处理器核心102是x位核心,其包括x位宽的寄存器。在各种实施例中,处理器核心102可以与x位宽的数据总线或者更宽位宽的数据总线接口。在特定实施例中,处理器核心是32位核心(即,x=32),然而在其他实施例中,处理器核心102可以是8位、16位、64位、128位或其他位宽的处理器核心。
处理器核心102经由***总线106、107可操作地耦合到其他***部件,该***总线106、107包括地址总线108、109,读取数据总线110、111和写入数据总线112、113。***总线106、107被图示为具有处理器核心侧106和存储器块侧107。在一个实施例中,***总线的处理器核心侧106可以在没有显著变更的情况下通过***总线控制器104,并且因此处理器核心侧106和存储器块侧107可以按基本上相同的方式配置和操作。在另一实施例中,***总线的处理器核心侧106的配置和/或操作可以不同于存储器块侧107,并且***总线控制器104可以实现变更(例如,除其他之外,***总线控制器104可以执行针对另一总线协议的转换,和/或改变操作频率)。尽管可能存在***总线的处理器核心侧106和存储器块侧107的差异,但是为了易于描述,它们仍将被共同称为***总线106、107,并且与两侧关联的读取、写入和地址总线也可以被共同称谓。在一个实施例中,读取数据总线110、111和写入数据总线112、113均是x位宽的数据总线,然而在其他实施例中它们可以是更宽位宽的数据总线。此外,***总线106、107可以包括各种控制线(未示出),诸如读取/写入控制信号线(例如,用以提供具有读取状态和写入状态的读取/写入信号)、总线时钟线(例如,用以提供***总线时钟信号)、传输尺寸信号线、和/或等待信号线(例如,用以传送总线传输等待信号)。
处理器核心102适于执行软件指令(例如,机器可读代码),除其他之外,这些软件指令可以使处理器核心102在***总线106、107上发出数据访问请求(例如,读取和/或写入请求)。发出数据访问请求包括处理器核心102在地址总线108、109上提供标识存储器块150、152或者***模块122~124中的位置的地址。对于写入类型的数据访问请求,处理器核心102还在***总线106、107的写入数据总线112、113上提供数据值。对于读取类型的数据访问请求,处理器核心102从***总线106、107的读取数据总线110、111读取数据值。如后面将更详细描述的,实施例使处理器核心102执行的软件能够使用更少的访问指令(例如,写入指令、读取指令、和/或移动指令)来访问***模块122~124。因此,这些访问可以以比传统方法更高效的方式被执行(例如,每字节使用更少的处理器周期)。
***总线控制器104适于管理***在总线106、107上在处理器核心102和各种类型的存储器块之间传输的数据流。这些存储器块可以包括例如,闪速存储器阵列150(闪存)以及随机存取存储器152(RAM)(诸如静态RAM,即SRAM)。此外或者可替选地,***100可以包括只读存储器(ROM),诸如电可擦除可编程ROM(EEPROM),和/或其他类型的存储器块。
在一个实施例中,***总线控制器104包括和/或操作地耦合到***总线控制器120。***总线控制器120适于提供x位宽的***总线106、107和z位宽的***总线126之间的接口。更具体地,***总线控制器120适于管理***总线106、107和各种类型的***模块122~124和/或操作地耦合到***总线126的其他***部件之间的数据流。***总线控制器104典型地提供两个基本功能。第一功能包括管理来自处理器核心102的访问的业务流,以及将数据传输请求“路由”到适当的总线接口。例如,这可以包括将数据传输请求路由到与***总线107接口的***总线控制器104中的逻辑,或者将数据传输请求路由到***总线控制器120。***总线控制器104的第二功能包括实现用于***总线107的总线接口。相似地,***总线控制器120实现了用于***总线126的总线接口。在一个实施例中,如后面将更详细描述的,***总线控制器102还处理将来自处理器的x位数据访问硬件分解为用于***总线126的一系列z位宽的数据访问,其中z小于x。
***总线126操作地耦合在***总线控制器120和***模块122~124之间。在一个实施例中,***总线126是包括地址总线128、读取数据总线130和写入数据总线132的同步的、非复用的总线。在可替选的实施例中,当***总线数据线作为双向数据总线线路操作时,读取数据总线130和写入数据总线132可以被实现为同一物理数据总线。在一个实施例中,读取数据总线130和写入数据总线132均是z位宽的数据总线(即,读取数据总线130包括z个读取数据线,并且写入数据总线132包括z个写入数据线)。***总线126还可以包括各种控制线(未示出),诸如读取/写入控制信号线(例如,用以提供具有读取状态和写入状态的读取/写入信号)、总线时钟线(例如,用以提供***总线时钟信号)、传输尺寸信号线、和/或等待信号线(例如,用以传送总线传输等待信号)。
一个或多个***模块122~124操作地连接到***总线126。根据各种实施例,***模块122~124中的至少一个适于执行多地址寄存器映射,尽管***模块122~124中的一些可能不适于该操作。如下文将更详细解释的,“多地址寄存器映射”指的是***模块122~124将地址总线128上提供的多个地址(或者得自地址的地址偏移)映射到***模块122~124中的单个读取和/或写入数据寄存器的能力。如这里使用的,术语“地址偏移”可以指的是完整的地址、完整的地址的一部分(例如,地址的一个或多个最低有效位)或者地址的一些其他导出物。例如,***模块122~124可以包括选自如下组的任何一个或多个***器件,举例而言,所述组包括但不限于:循环冗余校验(CRC)计算模块、校验和计算模块、串行***接口(SPI)、通用异步接收器/传送器(UART)、计数器、定时器、存储器控制器、显示器控制器(例如,液晶显示器(LCD)控制器)、用户接口控制器(例如,键盘、触摸屏和/或指点控制器)、中断控制器、和开机复位发生器等。电子***199还可以包括各种其他***器件,它们可以并入或者不并入本发明的主题内容的实施例。
中断控制器***模块134还操作地耦合到***总线126。中断控制器***模块134是如下类型的***模块,其适于从一些或所有***模块122~124接收中断信号(未示出),并且经由中断线136向处理器核心102提供相应的中断信号。
在各种可替选的实施例中,对于图1中图示并且上文讨论的部件,电子***100可以包括额外的或不同的部件。例如,电子***100还可以包括,除其他之外,一个或多个定时源、外部接口、通用输入/输出(GPIO)端口、模拟接口、额外的或不同的总线、电压调节器、和/或电源管理电路。在一个实施例中,电子***100可以被实现为芯片上***(SoC),其中各种***部件被集成到单个集成电路上。在另一实施例中,电子***100可以被实现为封装中***(SiP),其中各种***部件被集成到被一起封装到单个封装中的多个集成电路上。在又一实施例中,各种部件或者部件组可以被集成到多个集成电路上并且被分立地封装。
图2图示了根据示例性实施例的适于执行多地址寄存器映射的***模块200(例如,图1的***模块122~124中的一个)的简化框图。图2包括的内容意在提供各种实施例的一般性的讨论。实际上,实施例可以被并入到具有各种配置并且具有多种功能的***模块中,并且后面结合图5~7描述了一些具体的示例。因此,图2及其讨论不应被当作限制。
***模块200包括***功能电路202,其可操作地耦合到至少一个数据寄存器204、205、206、207中的一个或多个。每当数据值被写入到写入数据寄存器206、207中时,***功能电路202可以在后继的数据值被写入到写入数据寄存器206、207之前处理或者另外消耗数据。相似地,每当***功能电路202将数据值写入到读取数据寄存器204、205时,***功能电路202可以在数据值的外部读取数据传输已被执行完毕之前等待将后继的数据值写入到读取数据寄存器204、205。根据实施例,***功能电路202将数据写入至少一个数据寄存器204~207和/或从至少一个数据寄存器204~207读取数据。***功能电路202适于执行***模块200的主要功能,其可以包括,除其他之外,数据传输和/或计算功能。例如,但非作为限制,***功能电路202可以适于基于一个或多个写入数据寄存器206、207中的数据执行数学功能,并且在一个或多个读取数据寄存器204、205中提供结果(例如,计算例如循环冗余校验(CRC)值),将数据从写入数据寄存器206、207传输到读取数据寄存器204、205,和/或执行许多其他主要功能中的任何功能。在一个实施例中,***模块200可以包括中断请求生成器203,并且***功能电路202可以适于使中断请求生成器203在***总线中断信号线209上产生中断信号。例如,但非作为限制,当准备好从读取数据寄存器204、205读取数据(例如,结果)时和/或当***功能电路202准备好要从写入数据寄存器206、207提供数据时,***功能电路202可以促使中断生成。
***模块200还包括读取/写入信号接口230,其适于检测***总线读取/写入信号线232上出现的读取/写入信号的状态。当读取/写入信号指示读取数据传输并且地址解码逻辑216已对对应于读取数据寄存器204、205的地址偏移进行了解码时,***模块200可以将对应于解码地址偏移的读取数据寄存器204、205中的数据传输到***总线读取数据线210(例如,图1的读取数据总线130)上。相似地,当读取/写入信号指示写入数据传输并且地址解码逻辑216已对对应于写入数据寄存器206、207的地址偏移进行了解码时,***模块200可以将***总线写入数据线214(例如,图1的写入数据总线132)上出现的数据传输到对应于解码地址偏移的写入数据寄存器206、207。在可替选的实施例中,寄存器204~207中的任何一个或多个可以用作读取数据寄存器和写入数据寄存器(例如,单个物理寄存器可以用作读取/写入数据寄存器)。在该实施例中,读取数据线210和写入数据线214之间的接口可以被组合到单个接口(而非如图示的两个接口208、212)中,并且可以根据读取/写入数据信号的状态来控制数据传输的方向(例如,从寄存器到读取数据线或者从写入数据线到寄存器)。此外,在一个实施例中并且如前面提到的,当***总线数据线作为双向数据总线线路操作时,***总线读取数据线210和***总线写入数据线214可以被实现为同一物理线路。
***模块200还包括时钟生成器234,其适于从***总线时钟信号线236接收时钟信号,以及生成影响各种内部操作(例如,按照时钟使数据进入或离开寄存器204~207,执行计算,对地址或偏移进行解码等)的时序的一个或多个内部时钟。
***模块200还可以包括一个或多个写入数据寄存器206、207,每个写入数据寄存器适于接收并且存储从***总线写入数据线214通过总线写入线接口212传输的数据。相似地,***模块200还可以包括一个或多个读取数据寄存器204、205,每个读取数据寄存器适于存储数据并且经由总线读取线接口208将数据提供给***总线读取数据线210。在一个实施例中,寄存器204~207中的至少一个是y位宽的寄存器,其中y小于x(即,寄存器的位宽y小于图1处理元件(例如,处理器核心102)和/或***总线106、107的位宽x)。在特定实施例中,寄存器204~207是8位宽的寄存器(即,y=8),然而在其他实施例中,寄存器204~207中的任何一个或多个可以是4位、16位、32位或其他位宽的寄存器。
在图2中图示的实施例中,***模块200包括两个读取数据寄存器(读取低位数据寄存器和读取高位数据寄存器205)和两个写入数据寄存器(写入低位数据寄存器206和写入高位数据寄存器207)。尽管***模块200被示为包括两个读取数据寄存器204、205和两个写入数据寄存器206、207,但是在其他实施例中***模块可以具有更多或更少的读取数据寄存器和/或写入数据寄存器。例如,在一些其他实施例中,***模块可以具有仅一个或多个读取数据寄存器或者一个或多个写入数据寄存器,但是两者不能都是这样。在其他实施例中,***模块可以具有单个读取数据寄存器和/或单个写入数据寄存器。在其他实施例中,传送缓冲器(例如,先入先出或FIFO缓冲器)可以与写入数据寄存器206、207中的任一个或两个关联。因此,对于每个写入数据传输,写入数据寄存器206、207中的值可以被传输到缓冲器中,并且缓冲器的其他的值可以移位通过缓冲器离开写入数据寄存器206、207。相似地,接收缓冲器(例如,FIFO缓冲器)可以与读取数据寄存器204、205中的任一个或两个关联。因此,对于每个读取数据传输,可以将值从缓冲器传输到读取数据寄存器204、205,并且缓冲器中的其他的值可以朝向读取数据寄存器204、205移位。
在一个实施例中,***模块200还包括地址解码逻辑216,其适于并且被配置为基于由总线地址线接口222从***总线地址线224(例如,图1的***地址总线128)接收到的地址,对地址偏移位线220上出现的信号进行解码。基于解码处理,地址解码逻辑216可以使总线读取线接口208从读取数据寄存器204、205中的一个向***总线读取线210传输数据,或者地址解码逻辑216可以使总线写入线接口212从***总线写入线214向写入数据寄存器206、207中的一个传输数据。
在一个实施例中,每个数据寄存器204~207被映射到一个或多个地址偏移。在特定的实施例中,数据寄存器204~207中的至少一个被映射到多个地址偏移,其使***模块200适于执行如上文简要提到的多地址寄存器映射,并且其将在下文中更详细地解释。数据寄存器204~207以外的存储器资源也可以被映射到一个或多个地址偏移,尽管这里没有讨论这些其他的资源。如前面提到的,地址偏移可以是完整的地址、完整地址的一部分(例如,地址的一个或多个最低有效位)或者地址的一些其他导出物。在图示实施例中,地址偏移对应于可以在地址线224上接收的地址的四个最低有效位,并且因此四个地址偏移位线220可以适于向地址解码逻辑216传输地址的四个最低有效位。尽管图示了八个***总线地址线224和四个地址偏移位线220,但是在其他实施例中可以包括更多或更少的***总线地址线224和/或地址偏移位线220。对于四个地址偏移位线220,如图所示,地址解码逻辑216可以接收并且能够对多达十六个不同的地址偏移(例如,0000~1111(二进制)或者0x0~0xF(其中“0x”前缀表示十六进制值))进行解码。在其他实施例中,地址解码逻辑216可以适于对更多或更少的地址偏移进行解码。在一个实施例中,地址解码可以是硬连线的,并且因此是不变的,或者在其他实施例中,地址解码可以基于固定的或可配置的地址映射而至少部分地在软件中实现。
地址偏移解码逻辑(在硬件、软件或者此两者中实现)可以被表示为存储器映射。在一个实施例中,数据寄存器204~207中的至少一个被映射到多个地址。如这里使用的,术语“寄存器地址偏移集合”指的是映射到特定寄存器的多个地址偏移的集合。在特定实施例中,关于特定寄存器的第一地址偏移(即,地址偏移0x0)可以对应于第一地址,其由处理元件(例如,图1的处理器核心102)指定用于读取y位数据值,并且因此该地址偏移在下文中可以被称为“y位宽的访问地址偏移”,其中术语“y位宽的”指的是正被访问的数据的宽度,而非地址偏移的宽度,该地址偏移可以是或不是y位宽的。关于特定寄存器的一个或多个其他地址偏移(即,地址偏移0x4、0x5、0x6和0x7)可以对应于第二地址,其由处理元件指定用于读取x位数据值,并且因此这些地址偏移在下文中可以被称为“x位宽的访问地址偏移”,其中术语“x位宽的”指的是正被访问的数据的宽度,而非地址偏移的宽度,该地址偏移可以是或不是x位宽的。此外或者可替选地,在其他实施例中,y位宽的访问地址偏移和x位宽的访问地址偏移可以对应于读取y位和x位数据值。如下面的表1中的***模块存储器映射的示例性的8位视图中指明的,读取低位数据寄存器204被映射到包括五个地址偏移(即,偏移0x0、0x4、0x5、0x6和0x7)的寄存器地址偏移集合,而写入低位数据寄存器206被映射到包括五个不同的地址偏移(即,偏移0x2、0x8、0x9、0xA和0xB)的寄存器地址偏移集合:
偏移 寄存器
0x0 读取低位
0x1 读取高位
0x2 写入低位
0x3 写入高位
0x4 读取低位
0x5 读取低位
0x6 读取低位
0x7 读取低位
0x8 写入低位
0x9 写入低位
0xA 写入低位
0xB 写入低位
0xC~0xF 预留
表1-8位图的存储器映射示例
可替选地,同一示例性存储器映射可以被表示为下表2中的32位视图:
表2-32位图的存储器映射示例
表1和表2的存储器映射仅被提供用于示例的目的,并且可以存在许多存储器映射变化方案。从表1和表2的存储器映射可以发现,根据各种实施例,地址解码逻辑216被配置为并且适于将多个地址偏移的集合(例如,寄存器地址偏移集合)映射到***模块200的所有单个数据寄存器或者单个数据寄存器的相同部分,然而地址解码逻辑216也可以被配置为将一个或多个其他的多个地址的集合映射到一个或多个其他的数据寄存器。
在特定实施例中,寄存器地址偏移集合中的至少一个地址偏移可以对应于y位读取或写入数据传输,并且寄存器地址偏移集合中的其他地址偏移的数目n(其中n=x/y)可以对应于x位读取或写入数据传输,其被执行为针对连续地址的一系列的n个y位宽的数据传输,并且其中连续地址中的每个地址是对应于y位数据(例如,8位字节数据)的地址。换言之,在该实施例中,“其他”地址偏移中的每一个可以对应于正被写入或读取的x位数据值的y位部分。例如,如果写入数据寄存器204是8位寄存器,并且处理元件(例如,图1的处理器核心102)执行指令以将8位数据值写入到写入低位数据寄存器206,则可以在***总线地址线224上提供地址,其对应于映射到写入低位数据寄存器206的第一地址偏移(例如,来自上面的表1的地址偏移0x2)。相反地,如果处理元件执行指令以将32位数据值写入到写入数据寄存器206,则可以在***总线地址线224上提供四个地址(即,n=4,并且n=x/y=32/8=4),其对应于四个其他的地址偏移,每个地址偏移被映射到写入低位数据寄存器206(例如,来自上面的表1的地址偏移0x8、0x9、0xA和0xB)。
如下文将更详细解释的,在其中x位处理元件(例如,图1的处理器核心102)访问***模块(例如,***模块200)的y位数据寄存器(例如,寄存器204~207),并且x大于y的***中,较之传统的***和方法,适于将多个地址偏移映射到单个寄存器使得处理元件能够通过执行较少的程序指令来执行与***模块的x位数据传输。例如,对于从处理元件到***模块的8位寄存器的32位写入数据传输,处理元件可以执行单个32位写入指令,并且32位数据值可以被***总线控制器(例如,图1的***总线控制器120,或者在可替选的实施例中,总线控制器104)分解为针对四个***模块地址的四个8位写入,这四个***模块地址对应于映射到单个8位寄存器的四个地址偏移。在一个实施例中,四个***模块地址和四个地址偏移是连续的地址和地址偏移,然而在其他实施例中它们可以是不连续的。不同于其中处理元件将执行四个8位写入指令以写入32位数据值的传统方法,处理元件可以取而代之地执行少于四个写入指令(例如,单个32位写入指令或者两个16位写入指令)。这可以显著减少为完成32位写入数据传输而消耗的处理器周期的数目。
分别结合图3和4更详细地描述用于执行写入数据传输和读取数据传输的方法的实施例。由于在下文中出于清楚起见而在图3和4的方法的描述中引用了图1和2的各种元件,因此应结合图1和2查看图3和4。
首先参照用于执行写入数据传输的实施例的描述,图3图示了根据示例性实施例的用于写入***模块(例如,***模块200)的数据寄存器的方法的流程图。更具体地,该方法对应于32位处理元件(例如,处理器核心102)从存储器(例如,从闪存阵列150或RAM 152)取出32位数据值,并且将该32位数据值写入***模块(例如,***模块200)的8位写入数据寄存器(例如,写入低位数据寄存器206)。将理解,在其他实施例中,不同位宽的处理元件可以从存储器取出不同宽度的数据值,并且可以将数据值写入不同宽度的写入数据寄存器。
在框302中,当处理元件执行一个或多个软件指令以从存储器取出32位数据值时,该方法可以开始。例如,处理元件(例如,处理器核心102)可以将***总线106、107的读取/写入信号的状态设定为读取状态,并且可以在***总线106、107的地址总线108、109上提供地址,其中该地址对应于闪存阵列150或RAM 152中的存储器位置。处理元件随后可以从读取数据总线110、111读取32位数据值(在可用时),并且可以将32位数据值存储在一个或多个寄存器中或者其他存储器位置。
在框304中,处理元件可以执行一个或多个软件指令以将32位数据值写入***模块的8位写入数据寄存器。将理解,在一个实施例中,框302的取出指令和框304的写入指令可以收缩为单个移动指令,其指定32位数据值应从存储器位置(例如,在闪存阵列150或RAM152中)移动到***模块的8位写入数据寄存器。在任何情况下,处理元件可以将***总线106、107的读取/写入信号的状态设定为写入状态,并且可以对应于第一地址偏移(例如,来自上文的表1的地址偏移0x8)地在地址总线108、109上提供地址,该第一地址偏移将被***模块映射到***模块的8位写入数据寄存器。此外,处理元件在***总线的写入数据总线112、113上提供32位数据值。
在框306中,***总线控制器(例如,图1的***总线控制器120)接收地址和32位数据值,并且可以临时地将32位数据值存储在一个或多个寄存器中。在一个实施例中,总线控制器120执行一系列z位宽的数据的写入数据传输,其中z是***总线126的写入数据总线132的宽度。为了易于描述,该示例将假设写入数据总线132具有与***模块的写入数据寄存器(例如,写入低位数据寄存器206)相同的位宽。因此,在该示例中,z=8。将理解,写入数据总线132的宽度可以小于写入数据寄存器的宽度(例如,在各种实施例中,z可以小于或等于y),在该情况中,***总线控制器104和/或***总线控制器120可以执行多个写入数据传输,以便于将y位数据值写入到写入数据寄存器。
对于其中z=8的示例,每个写入数据传输包括识别下一将写入的8位数据值,以及使用在***模块中被映射到单个写入数据寄存器的多个写入数据寄存器地址中的一个来执行8位写入数据传输。例如,对于初始的写入数据传输,32位数据值的特定字节可以被选择为待写入的第一字节,并且总线控制器120可以使用被映射到***模块的写入数据寄存器的第一写入数据寄存器地址。实际的写入数据传输可以涉及将***总线126的读取/写入信号的状态设定为写入状态,提取32位数据值的第一字节并且将其提供给***总线126的写入数据总线132,以及在***总线126的地址总线128上提供第一写入数据寄存器地址,当然,不一定采取这一顺序。
在框308中,***模块接收读取/写入信号以及地址总线128上的第一写入数据寄存器地址和写入数据总线132上的第一字节。***模块的地址解码逻辑216将第一地址中指示的地址偏移映射到写入数据寄存器206,并且该第一字节可以被传输到写入数据寄存器206中并由***功能电路202处理。例如,还参照上文的表1,第一地址中指示的地址偏移可以是偏移0x8,其是映射到写入低位数据寄存器206的四个连续地址偏移中的一个。
紧随框306之后和/或与框308的执行并行地,总线控制器120可以确定正在写入到写入数据寄存器206的32位数据值的最后的8位数据值是否已被写入。当最后的值已被写入时(即,当总线控制器120完成32位数据值的所有四个字节的写入时),该方法可以结束。当最后的值未被写入时,该方法可以返回到框306,其中总线控制器120执行系列中的下一8位宽的数据的写入数据传输。例如,对于第二写入数据传输,32位数据值的不同的字节可以被选择为待写入的第二字节,并且总线控制器120可以使用映射到***模块的写入数据寄存器的第二写入数据寄存器地址(例如,对应于上文的表1的偏移0x9的写入数据寄存器地址)。再次地,写入数据传输可以涉及将***总线126的读取/写入信号的状态设定为写入状态,提取第二字节并且将其提供给***总线126的写入数据总线132,以及在***总线126的地址总线128上提供第二写入数据寄存器地址,然而不一定采取这一顺序。该迭代过程可以继续,直至所存储的32位数据值的所有四个字节均被写入到写入数据寄存器206。
实现本发明的主题内容的实施例的潜在优点在于,较之传统方法,处理元件可以执行更少的指令以将x位宽的数据值写入到***模块的y位宽的寄存器或者从***模块读取x位宽的数据值,其中x大于y。因此,为了访问数据而消耗的处理器周期更少。下面提供了示例性代码,其对应于处理元件取出多个32位数据值并且将其写入CRC模块以便于CRC模块执行闪存阵列(例如,闪存阵列150)的一个区域的CRC计算。使用各种实施例,处理元件可以根据如下汇编代码来执行32位的长型移动(mov.l)操作,以便将从存储器取出的每个32位数据值写入到CRC模块中的8位寄存器。仅出于示例的目的,CRC寄存器被表示为CRC模块的写入低位数据寄存器:
# d0=byteCount/4
# a0=pointer to Flash array
# a1=pointer to CRC write low data register
L%1: # longword copy,unrolled 4x
mov.l(%a0)+,(%a1) # copy source data 4-byte value to CRC
mov.l(%a0)+,(%a1) # copy source data 4-byte value to CRC
mov.l(%a0)+,(%a1) # copy source data 4-byte value to CRC
mov.l(%a0)+,(%a1) # copy source data 4-byte value to CRC
subq.l&4,%d0 # decrement loop counter
bne.b L%1 # done?Ifnot,branch back to top of loop
作为对比,使用传统技术将相同的32位数据值从存储器传输到***设备中的8位寄存器,如以下代码中例示的,处理元件将执行多达四次移动操作,其中每个移动操作将每次写入一个字节(mov.b),而非一次写入完整的32位数据值:
# d0=byteCount
# a0=pointerto Flash array
# a1=pointer to CRC write low data register
L%0: #byte copy,unrollcd 4x
mov.b(%a0)+,(%a1) #copy source data byte value to CRC
mov.b(%a0)+,(%a1) #copy source data byte value to CRC
mov.b(%a0)+,(%a1) #copy source data byte value to CRC
mov.b(%a0)+,(%a1) #copy source data byte value to CRC
subq.l&4,%d0 #decrement loop counter
bne.b L%0 #done?If not,branch back to top of loop
对于潜在的性能益处,实现根据实施例的第一代码示例的处理元件可以经历每个传输字节的约2.25个CPU周期的测量性能,而实现根据传统方法的第二代码示例的处理元件可以经历每个传输字节的约6.00个CPU周期的测量性能。根据测量的性能,当在相同的处理器核心上执行,两个示例均在相同的时钟频率下操作时,第一代码示例的执行约比第二代码示例的执行快2.66倍。因此,较之传统方法,实现利用各种实施例的优点的代码可以为处理元件性能提供显著的改进。
除了实现各种实施例以便将x位宽的数据值写入***模块的y位宽的写入数据寄存器以外,实施例还可以或者可替选地被实现为从***模块的y位读取数据寄存器读取x位数据值。图4图示了根据示例性实施例的用于读取***模块的数据寄存器的方法的流程图。更具体地,该方法对应于32位处理元件(例如,处理器核心102)从***模块(例如,图2的***模块200)的8位读取数据寄存器(例如,读取低位数据寄存器204)读取32位数据值。将理解,在其他实施例中,不同位宽的处理元件可以从***模块的不同宽度的读取数据寄存器读取不同宽度的数据值。
在框402中,当处理元件执行一个或多个软件指令以从***模块的8位寄存器读取32位数据值时,该方法可以开始。例如,还参照图1,处理器核心102可以将***总线106、107的读取/写入信号的状态设定为读取状态,并且可以在***总线106、107的地址总线108、109上提供地址(在这里被称为“处理元件提供的地址”),其中该地址对应于***模块的8位读取数据寄存器(例如,读取低位数据寄存器204)。
在框404中,总线控制器120接收读取/写入信号和核心提供的地址,并且作为响应,执行一系列的多个z位宽的数据的读取数据传输中的第一个,其中z是***总线126的读取数据总线130的宽度。如下文将阐明的,总线控制器120将通过临时地对被读取到寄存器的适当部分或者其他存储器位置的每个z位宽的数据值进行安置,在系列读取数据传输过程中建立x位宽的数据值,由此建立完整的x位宽的值。为了易于描述,该示例将假设读取数据总线130具有与***模块的读取数据寄存器(例如,读取低位数据寄存器204)相同的位宽。因此,在该示例中,z=8。将理解,读取数据总线130的宽度可以小于读取数据寄存器的宽度(例如,在各种实施例中,z可以小于或等于y),在该情况中,总线控制器120可以执行多个读取数据传输,以便从读取数据寄存器读取y位数据值。
对于其中z=8的示例,每个读取数据传输包括识别下一待读取的8位数据值,以及使用在***模块中被映射到单个读取数据寄存器的多个读取数据寄存器地址中的一个来执行8位读取数据传输。例如,对于初始的读取数据传输,32位数据值的特定字节可以被选择为待读取的第一字节,并且总线控制器120可以使用映射到***模块的读取数据寄存器的第一读取数据寄存器地址。实际的读取数据传输可以涉及将***总线126的读取/写入信号的状态设定为读取状态,在***总线126的地址总线128上提供第一读取数据寄存器地址,从***总线126的读取数据总线130读取32位数据值的第一字节(在可用时),以及将第一字节存储在32位寄存器的第一字节位置或者总线控制器120中的可访问的其他存储器位置。
在框406中,***模块接收读取/写入信号以及地址总线128上的第一读取数据寄存器地址。***模块的地址解码逻辑216将第一地址中指示的地址偏移映射到读取数据寄存器204,并且第一字节可以从读取数据寄存器204传输到***总线126的读取数据总线130。例如,还参照上文的表1,第一地址中指示的地址偏移可以是偏移0x4,其是映射到读取低位数据寄存器204的四个地址偏移中的一个。
在框408中,总线控制器120可以从读取数据总线130读取第一字节,并且临时地将数据存储在寄存器中的适当的位置或者用于建立32位数据值的其他存储器位置。在框410中,总线控制器120可以确定正在从读取数据寄存器204读取的32位数据值的最后的字节是否已被读取。当最后的值未被读取时,该方法可以返回到框404,其中总线控制器120执行系列中的下一8位宽的读取数据传输。例如,对于第二读取数据传输,32位数据值的不同的字节可以被选择为待读取的第二字节,并且总线控制器120可以使用映射到***模块的读取数据寄存器的第二读取数据寄存器地址(例如,对应于上文的表1的偏移0x5的读取数据寄存器地址)。再次地,读取数据传输可以涉及将***总线126的读取/写入信号的状态设定为读取状态,在***总线126的地址总线128上提供第二读取数据寄存器地址,从***总线126的读取数据总线130读取第二字节(在可用时),以及将第二字节临时地存储在32位寄存器的适当的字节位置或者其中正在构建32位数据的其他存储器位置。
当在框410中确定最后的值已被读取时(即,当32位数据值的所有四个字节均已从读取数据寄存器204读取时),在框412中,总线控制器120可以通过将32位临时保存寄存器或存储器位置中的数据传输到***总线106、107的读取数据总线110、111上,从而向处理元件提供32位数据值。处理元件随后可以将数据值从读取数据总线110、111传输到32位寄存器或者其他存储器位置,并且可以处理该数据。该方法随后可以结束。
现将结合图5和6描述***模块的特定示例。更具体地,图5和6分别图示了根据CRC模块中实现的示例性实施例的框图和时序图。将理解,结合图5和6描述的***模块实施例不应被视为使各种实施例的实现方案仅限于CRC模块。相反,实施例可以在广泛的多种***模块类型中实现,并且上文提供了这些***模块类型的非排他性的列表。
图5图示了根据示例性实施例的CRC模块500的简化框图。如前面提到的,CRC模块是可以根据实施例实现的多种类型的***模块中的一种。根据一个实施例,CRC模块500包括CRC生成器电路502、CRC低位数据寄存器504、CRC高位数据寄存器506和地址解码逻辑516。CRC模块500还包括时钟生成器534,其适于从***总线时钟信号线536接收时钟信号,以及生成影响各种内部操作的时序的一个或多个内部时钟。
CRC生成器电路502适于基于种子值和存储器块中存储的数据来计算关于存储器块的CRC值。在一个示例性实施例中,CRC生成器电路502包括16位CRC生成器电路,并且种子值是16位种子值。在操作期间,处理元件(例如,图1的处理器核心102)可以将16位的种子值的第一字节写入CRC低位数据寄存器504,并且将16位的种子值的第二字节写入CRC高位数据寄存器506。在一个实施例中,在加载16位种子值之后,处理元件可以从存储器块取出一个或多个32位数据值,并且将每个32位数据值写入CRC低位数据寄存器504,这区别于传统的***,在传统***中处理元件将从存储器块取出多个8位数据值并且将每个8位数据值写入CRC低位数据寄存器(例如,由此为了传输相同量的数据,执行了约为四倍的取出和写入数据传输的次数)。总线控制器(例如,图1的总线控制器120)随后可以将32位数据值中的每个字节写入到由地址解码逻辑512映射到CRC低位数据寄存器504的多个地址中的一个。每个字节随后可以由CRC生成器电路502处理,以便生成组合的CRC高位数据寄存器506和CRC低位数据寄存器504中的16位CRC值。在将最后的数据值写入CRC低位数据寄存器504之后,处理元件随后可以从组合的CRC高位数据寄存器506和CRC低位数据寄存器504读取作为结果的16位CRC值。
CRC模块500还包括读取/写入信号接口530,其适于检测***总线读取/写入信号线532上出现的读取/写入信号的状态。当读取/写入信号指示读取数据传输并且地址解码逻辑516已对对应于CRC低位数据寄存器504或CRC高位数据寄存器506的偏移进行解码时,CRC模块500可以将如解码后的偏移所指定的CRC低位数据寄存器504或CRC高位数据寄存器506中的数据传输到***总线读取数据线510(例如,图1的读取数据总线130)上。相似地,当读取/写入信号指示写入数据传输并且地址解码逻辑516已对对应于CRC低位数据寄存器504或CRC高位数据寄存器506的偏移进行解码时,CRC模块500可以将***总线写入数据线514(例如,图1的写入数据总线132)上出现的数据传输到由解码后的偏移所指定的CRC低位数据寄存器504或CRC高位数据寄存器506。
CRC低位数据寄存器504和CRC高位数据寄存器506中的每一个适于接收并且存储来自***总线写入数据线514的由总线读取/写入线接口508传输的数据。此外,CRC低位数据寄存器504和CRC高位数据寄存器506适于将它们中存储的数据提供给CRC生成器电路502。CRC高位数据寄存器506和CRC低位数据寄存器504还适于接收并且存储作为结果的16位CRC值,其每个数据字节被写入到CRC低位数据寄存器504。在读取数据传输过程中,CRC高位数据寄存器506和CRC低位数据寄存器504中存储的作为结果的16位CRC值可以由总线读取/写入线接口508传输到***总线读取数据线510上。在一个实施例中,CRC低位数据寄存器504或CRC高位数据寄存器506是8位宽的寄存器,然而在其他实施例中CRC低位数据寄存器504或CRC高位数据寄存器506中的任一个或两个可以是4位、16位、32位或者其他位宽的寄存器。在图5中图示的实施例中,CRC模块500包括一个CRC低位数据寄存器504和一个CRC高位数据寄存器506,然而在其他实施例中,CRC模块可以具有更多的CRC低位数据寄存器和/或CRC高位数据寄存器。
在一个实施例中,CRC模块500还包括地址解码逻辑516,其适于并且被配置为基于总线地址线接口522从***总线地址线524(例如,图1的地址总线128)接收到的地址对地址偏移位线520上出现的信号进行解码。基于解码处理,地址解码逻辑516可以使总线读取/写入线接口508从CRC低位数据寄存器504或CRC高位数据寄存器506中的一个向***总线读取线510传输数据,或者地址解码逻辑516可以使总线读取/写入线接口508从***总线写入线514向CRC低位数据寄存器504或CRC高位数据寄存器506中的一个传输数据。
在一个实施例中,CRC高位数据寄存器506被映射到单个地址偏移,并且CRC低位数据寄存器504被映射到多个地址偏移。这使CRC模块500适于执行如上文讨论的多地址寄存器映射。在特定实施例中,CRC低位数据寄存器地址偏移中的一个(即,地址偏移0x1)可以对应于由处理元件指定用于写入8位数据值的第一地址,并且因此该地址偏移是y位宽的访问地址偏移。其他CRC低位数据寄存器地址偏移(即,地址偏移0x4、0x5、0x6和0x7)可以对应于由处理元件指定用于写入32位数据值的第二地址,并且因此这些地址偏移是x位宽的访问地址偏移。如下面的表3中的***模块存储器映射的示例性的8位视图中指明的,CRC低位数据寄存器504被映射到包括五个地址偏移(即,偏移0x0、0x4、0x5、0x6和0x7)的寄存器地址偏移集合:
偏移 寄存器
0x0 CRC高位
0x1 CRC低位
0x2 预留
0x3 预留
0x4 CRCL0(CRC低位)
0x5 CRCL1(CRC低位)
0x6 CRCL2(CRC低位)
0x7 CRCL3(CRC低位)
0x8~0xF 预留
表3-CRC存储器映射示例的8位视图
“CRCL0”指的是32位数据值的第一字节,其对应于映射到CRC低位数据寄存器504的地址偏移(即,地址偏移0x4)。相似地,“CRCL1”指的是32位数据值的第二字节,其对应于也映射到CRC低位数据寄存器504的地址偏移(即,地址偏移0x5),如此等等。表3的存储器映射仅被提供用于示例的目的,并且可以存在许多存储器映射变化方案。从表3的存储器映射可以发现,根据各种实施例,地址解码逻辑516被配置为并且适于将多个地址偏移的集合(例如,寄存器地址偏移集合)映射到CRC模块500的单个数据寄存器,然而地址解码逻辑516也可以被配置为将一个或多个其他的多个地址的集合映射到一个或多个其他的数据寄存器。
图6图示了根据示例性实施例的与生成CRC值结合执行的写入和读取数据传输相关的各种信号的时序图。该时序图包括时钟信号602(CLK)、地址总线信号604(ADDR)、读取/写入信号606(R/W)、写入数据总线信号608(WDATA)和读取数据总线信号610(RDATA)。除了图6中图示的信号,在CRC值的生成期间还可能出现一个或多个另外的信号,诸如例如使能信号和等待信号,然而出于简要的目的未图示或描述这些信号。在每个写入数据传输期间,读取/写入信号606的状态被设定为写入状态(例如,低状态),并且在每个读取数据传输期间,读取/写入信号606的状态被设定为读取状态(例如,高状态)。地址和数据可以如根据实施例图示的在时钟信号602的低-高变换期间按照时钟进行操作,或者可替选地在时钟信号602的高-低变换期间按照时钟进行操作。CRC值生成期间执行的各种操作可以耗用比图5所示更多或更少的时钟周期,并且数据的更多或更少的字节可以被用于生成CRC值。下面的描述还涉及图5的元件。
为了生成CRC值,根据一个实施例,可能出现如下处理序列,然而在其他实施例中,在仍实现基本上相似的结果的情况下,该序列可以变更。在一个实施例中,当处理元件(例如,图1的处理器核心102)加载种子值时,CRC值生成可以开始。这可以包括例如,处理元件将16位种子值的第一字节(0xFF)写入CRC高位数据寄存器506,并且将16位种子值的第二字节(0xFF)写入CRC低位数据寄存器504。为了写入16位种子值的第一字节,处理元件可以提供第一字节以及与CRC模块的地址解码逻辑516映射到CRC高位数据寄存器506的地址偏移(例如,来自上文的表3的地址偏移0x0)相对应的地址。如图6中所示,在第一时钟周期620上,该地址偏移可以被映射并且第一字节(0xFF)可以按照时钟进入CRC高位数据寄存器506。相似地,为了写入16位种子值的第二字节,处理元件可以提供第二字节以及与CRC模块的地址解码逻辑516映射到CRC低位数据寄存器504的地址偏移(例如,来自上文的表3的地址偏移0x1)相对应的地址。该地址偏移可以被称为关于CRC低位数据寄存器504的y位宽的访问地址偏移。在第二时钟周期621上,该地址偏移可以被映射并且第二字节(0xFF)可以按照时钟进入CRC低位数据寄存器504。因此16位种子值(0xFFFF)被加载到CRC高位数据寄存器506和CRC低位数据寄存器504中。
处理元件随后可以执行代码以从正在为其生成CRC值的存储器块取出第一32位数据值,并且将该32位数据值写入对应于x位宽的访问地址偏移中的一个的地址,CRC模块的地址解码逻辑516还将该地址偏移映射到CRC低位数据寄存器504(例如,来自上文的表3的地址偏移0x4)。总线控制器(例如,图1的总线控制器120)随后可以执行针对CRC低位数据寄存器504的四次写入的序列,其中每次写入包括写入来自32位数据值的选定字布。在一个实施例中,序列中的第一写入将会写入32位数据值的第一字节(0x31)并且对映射到CRC低位数据寄存器504的第一地址进行寻址,序列中的第二写入将会写入32位数据值的第二字节(0x32)并且对映射到CRC低位数据寄存器504的第二地址进行寻址,序列中的第三写入将会写入32位数据值的第三字节(0x33)并且对映射到CRC低位数据寄存器504的第三地址进行寻址,并且序列中的第四写入将会写入32位数据值的第四字节(0x34)并且对映射到CRC低位数据寄存器504的第四地址进行寻址。在时钟周期622、623、624和625期间,在地址总线信号604上顺序图示了四个地址偏移(例如,地址偏移0x4、0x5、0x6和0x7)的序列,以及在写入数据总线信号608上顺序图示了数据的四个字节。如上文所述,在一个实施例中,四个数据偏移可以由地址解码逻辑516映射到CRC低位数据总线504。在时钟周期625结束时,CRC模块500将16位种子值(0xFFFF)接收到CRC高位数据寄存器506和CRC低位数据寄存器504中,并且还将四个字节(0x31、0x32、0x33、0x34)接收到CRC低位数据寄存器504中。在接着的四个时钟周期626、627、628、629期间,四个另外的字节(0x35、0x36、0x37、0x38)被接收到CRC低位数据寄存器504中,作为处理元件将第二32位数据值写入对应于x位宽的访问地址偏移(例如,地址偏移0x4)的地址的结果。在接着的时钟周期630期间,一个另外的字节被接收到CRC低位数据寄存器504中,该字节可以表示正在为其生成CRC值的存储器块中的最后的数据字节。由于所写入的最后的值对应于字节,而非对应于32位数据值,因此处理元件可以将8位数据值写入对应于y位宽的访问CRC地址偏移的地址(例如,地址偏移0x1)。时钟周期631表示等待周期,在该等待周期期间CRC生成器电路502可以完成其CRC值计算。
为了从CRC低位数据寄存器504和CRC高位数据寄存器506读取16位CRC值,处理元件可以从CRC高位数据寄存器506读取16位CRC值的第一字节,并且从CRC低位数据寄存器504读取16位CRC值的第二字节。为了读取16位CRC值的第一字节,处理元件可以提供与CRC模块的地址解码逻辑516映射到CRC高位数据寄存器506的地址偏移(例如,来自上文的表3的地址偏移0x0)相对应的地址。如图6中所示,在时钟周期632期间,该地址偏移可以被映射并且第一字节(0x29)可以读取自CRC高位数据寄存器506。相似地,为了读取16位CRC值的第二字节,处理元件可以提供与CRC模块的地址解码逻辑516映射到CRC低位数据寄存器504的y位宽的访问地址偏移(例如,来自上文的表3的地址偏移0x1)相对应的地址。在时钟周期633期间,该地址偏移可以被映射并且第二字节(0xB1)可以读取自CRC低位数据寄存器504。
使用用于生成CRC值的装置和方法的实施例,如结合图5和6图示和描述的,处理元件可以执行将x位宽的数据值写入具有y位宽的CRC低位数据寄存器的软件指令,其中x大于y。因此,使用各种实施例,可以改进处理器效率,优于传统的装置和方法,在传统的装置和方法中,处理元件将执行更多的软件指令以便于写入相同量的数据(例如,处理元件将执行仅将y位宽的数据值写入y位宽的CRC低位数据寄存器的指令)。
因此,已描述了用于从各种类型的***模块中的数据寄存器读取数据和/或将数据写入各种类型的***模块中的数据寄存器的方法和装置的各种实施例。一种电子***的实施例包括处理元件,总线控制器和***模块。处理元件适于执行使处理元件执行x位宽的数据值的数据传输的机器可读代码,其中执行数据传输包括提供第一读取/写入信号以及对应于***模块的y位宽的数据寄存器的处理元件提供的地址,并且其中y小于x。总线控制器适于接收读取/写入信号和处理元件提供的地址,并且作为响应,执行一系列的与***模块的多个数据传输,其中执行该系列包括提供第二读取/写入信号和关于该系列中的第一数据传输的第一***地址,以及提供关于该系列中的至少一个其他的数据传输的至少一个不同的***地址。***模块被配置为将第一***地址映射到y位宽的数据寄存器,并且还将至少一个不同的***地址映射到y位宽的数据寄存器。
在另一实施例中,***模块包括y位宽的第一数据寄存器,其可操作地耦合到数据总线;以及地址解码逻辑,其可操作地耦合到地址总线,并且被配置为将多个不同的地址偏移映射到第一数据寄存器。在一个实施例中,电子***进一步包括***总线和至少一个存储器块,其中该至少一个存储器块和处理元件通过***总线操作地耦合在一起,并且其中处理元件进一步适于执行用于在***总线上从存储器块取出数据值的机器代码。在另一实施例中,数据传输包括用于将x位宽的数据值写入***模块的写入数据传输,并且处理元件进一步适于向总线控制器提供x位宽的数据值。在另一实施例中,数据传输包括用于从***模块读取x位宽的数据值的读取数据传输,并且总线控制器进一步适于从***模块读取多个y位宽的数据值,以从多个y位宽的数据值建立x位宽的数据值,以及将x位宽的数据值提供给处理元件。在另一实施例中,电子***还包括***总线,其操作地耦合在总线控制器和***模块之间,其中***总线包括z位宽的数据总线,并且其中z小于或等于y。在另一实施例中,处理元件是选自处理器核心、非核心处理元件和直接存储器访问单元的处理元件。
另一实施例包括一种电子***,其包括***模块,该***模块具有y位宽的第一数据寄存器,其可操作地耦合到数据总线;以及地址解码逻辑,其可操作地耦合到地址总线,并且被配置为将多个不同的地址偏移映射到第一数据寄存器。在另一实施例中,地址解码逻辑被配置为将多个不同的地址偏移中的第一地址偏移映射到第一数据寄存器用于y位宽的数据传输,以及将多个不同的地址偏移中的x/y个其他地址偏移映射到第一数据寄存器用于x位宽的数据传输,该x位宽的数据传输是作为针对顺序地址的一系列x/y个y位宽的数据传输而执行的,并且其中顺序地址中的每个地址是对应于8位字节数据的地址。
在另一实施例中,***模块还包括一个或多个y位宽的另外的数据寄存器,其可操作地耦合到数据总线。在另一实施例中,***模块还包括读取/写入信号接口,其适于接收读取/写入信号,其中当读取/写入信号处于读取状态时,并且当地址解码逻辑已将关于地址总线上出现的地址的地址偏移映射到第一数据寄存器时,***模块适于将y位宽的数据值从第一数据寄存器传输到数据总线的读取数据总线。在另一实施例中,***模块还包括读取/写入信号接口,其适于接收读取/写入信号,其中当读取/写入信号处于写入状态时,并且当地址解码逻辑已将关于地址总线上出现的地址的地址偏移映射到第一数据寄存器时,***模块适于将y位宽的数据值从数据总线的写入数据总线传输到第一数据寄存器。在另一实施例中,***模块还包括中断请求生成器,其适于产生中断信号。在另一实施例中,***模块还包括***功能电路,其可操作地耦合到第一数据寄存器,其中***功能电路适于执行***模块的主要功能,以及将数据写入第一数据寄存器或者从第一数据寄存器读取数据。在另一实施例中,***功能电路适于执行循环冗余校验计算。
在另一实施例中,电子***还包括处理元件和总线控制器。处理元件适于执行使处理元件执行x位宽的数据值的数据传输的机器可读代码,其中执行数据传输包括提供第一读取/写入信号以及对应于***模块的第一数据寄存器的处理元件提供的地址,并且其中y小于x。总线控制器适于接收读取/写入信号和处理元件提供的地址,并且作为响应,执行一系列的与***模块的多个数据传输,其中执行该系列包括提供第二读取/写入信号和关于该系列中的第一数据传输的第一***地址,以及提供关于该系列中的至少一个其他的数据传输的至少一个不同的***地址。在另一实施例中,***模块是选自循环冗余校验计算模块、校验和计算模块、串行***接口、通用异步接收器/传送器、显示器控制器、和用户接口控制器的模块。
另一实施例包括一种用于在处理元件和***模块之间传输数据的方法。该方法包括如下步骤:由***模块接收第一读取/写入信号以及从地址总线接收多个不同的地址;由***模块将对应于多个不同的地址的多个不同的地址偏移映射到单个y位宽的数据寄存器;以及当第一读取/写入信号处于读取状态时由***模块将y位宽的数据值从y位宽的数据寄存器传输到数据总线,并且当第一读取/写入信号处于写入状态时由***模块将y位宽的数据值从数据总线传输到y位宽的数据寄存器。
在另一实施例中,该方法包括如下步骤:由处理元件执行使处理元件执行x位宽的数据值的数据传输的机器可读代码,其中执行数据传输包括提供第二读取/写入信号以及对应于***模块的y位宽的数据寄存器的处理元件提供的地址,并且其中y小于x;由总线控制器接收第二读取/写入信号和处理元件提供的地址;以及由总线控制器响应于接收到第二读取/写入信号而执行一系列的与***模块的多个数据传输,其中执行该系列包括提供第一读取/写入信号和关于该系列中的每个数据传输的多个不同的地址中的地址。在另一实施例中,映射多个不同的地址偏移的步骤包括将多个不同的地址偏移中的第一地址偏移映射到数据寄存器用于y位宽的数据传输,并且将多个不同的地址偏移中的x/y个其他地址偏移映射到数据寄存器用于x位宽的数据传输。
尽管上文结合特定的***、装置和方法已描述了各种实施例的原理,但是将清楚地理解,所进行的描述仅作为示例并且不应被当作对本发明的主题内容的范围的限制。此外,这里使用的习语和术语用于描述而非限制的目的。
前面的特定实施例的描述充分揭示了各种实施例的一般本质,从而其他人可以在不偏离一般概念的情况下通过应用当前的知识而容易地对其进行修改和/或调整以用于各种应用。因此,该调整和修改应涵盖于所公开的实施例的等同物的意义和范围内。本发明的主题内容涵盖所附权利要求的精神和广泛范围内的所有这些变更、修改、等同和变化。

Claims (19)

1.一种电子***,包括:
处理元件,适于执行使所述处理元件执行x位宽的数据值的数据传输的机器可读代码,其中,执行数据传输包括提供第一读取/写入信号以及与***模块的y位宽的数据寄存器相对应的处理元件提供的一个地址,以及其中,y小于x;
总线控制器,适于接收所述读取/写入信号和所述处理元件提供的一个地址,以及作为响应,执行一系列的多个与所述***模块的数据传输,其中,执行所述多个与所述***模块的数据传输的系列包括提供第二读取/写入信号和用于所述多个与所述***模块的数据传输的系列中第一数据传输的第一***地址,以及提供用于所述多个与所述***模块的数据传输的系列中每个其他数据传输的不同的***地址,以及其中所述多个与所述***模块的数据传输的系列包括x/y次顺序数据传输,在所述x/y次顺序数据传输中,所述x/y次顺序数据传输中的每一个在不同的时间处执行;以及
所述***模块被配置为将所述第一***地址映射到所述y位宽的数据寄存器,以及还将所述不同的***地址映射到所述y位宽的数据寄存器。
2.如权利要求1所述的电子***,其中,所述***模块包括:
y位宽的第一数据寄存器,可操作地耦合到数据总线;以及
地址解码逻辑,可操作地耦合到地址总线,并且被配置为将多个不同的地址偏移映射到所述第一数据寄存器的所有或相同的部分。
3.如权利要求1所述的电子***,进一步包括:
***总线;以及
至少一个存储器块,其中,所述至少一个存储器块和所述处理元件通过所述***总线操作地耦合在一起,以及其中,所述处理元件进一步适于执行用于在所述***总线上从所述存储器块取出数据值的机器可读代码。
4.如权利要求1所述的电子***,其中,所述数据传输包括用于将x位宽的数据值写入所述***模块的写入数据传输,以及其中,所述处理元件进一步适于向所述总线控制器提供x位宽的数据值。
5.如权利要求1所述的电子***,其中,所述数据传输包括用于从所述***模块读取x位宽的数据值的读取数据传输,以及其中,所述总线控制器进一步适于从所述***模块读取多个y位宽的数据值,以从所述多个y位宽的数据值建立x位宽的数据值,以及将所述x位的数据值提供给所述处理元件。
6.如权利要求1所述的电子***,进一步包括:
***总线,操作地耦合在所述总线控制器和所述***模块之间,其中,所述***总线包括z位宽的数据总线,以及其中,z小于或等于y。
7.如权利要求1所述的电子***,其中,所述处理元件是选自如下组的处理元件,所述组包括处理器核心、非核心处理元件和直接存储器访问单元。
8.一种电子***,包括:
***模块,其具有:
y位宽的第一数据寄存器,可操作地耦合到数据总线;以及
地址解码逻辑,可操作地耦合到地址总线,并且被配置为将多个不同的地址偏移映射到所述第一数据寄存器,其中,所述地址解码逻辑被配置为将所述多个不同的地址偏移中的第一地址偏移映射到所述第一数据寄存器用于y位宽的数据传输,以及将所述多个不同的地址偏移中的x/y个其他地址偏移映射到所述第一数据寄存器用于x位宽的数据传输,所述x位宽的数据传输是作为针对顺序地址的一系列x/y个y位宽的数据传输而执行的,以及其中y小于x。
9.如权利要求8所述的电子***,其中,所述顺序地址中的每个地址是对应于8位字节数据的地址。
10.如权利要求8所述的电子***,其中,所述***模块进一步包括:
一个或多个y位宽的另外的数据寄存器,可操作地耦合到所述数据总线。
11.如权利要求8所述的电子***,其中,所述***模块进一步包括:
读取/写入信号接口,其适于接收读取/写入信号,其中当所述读取/写入信号处于读取状态时,并且当所述地址解码逻辑已将用于地址总线上出现的地址的地址偏移映射到所述第一数据寄存器时,所述***模块适于将y位宽的数据值从所述第一数据寄存器传输到所述数据总线的读取数据总线。
12.如权利要求8所述的电子***,其中,所述***模块进一步包括:
读取/写入信号接口,其适于接收读取/写入信号,其中当所述读取/写入信号处于写入状态时,并且当所述地址解码逻辑已将用于地址总线上出现的地址的地址偏移映射到所述第一数据寄存器时,所述***模块适于将y位宽的数据值从所述数据总线的写入数据总线传输到所述第一数据寄存器。
13.如权利要求8所述的电子***,其中,所述***模块进一步包括:
中断请求生成器,适于产生中断信号。
14.如权利要求8所述的电子***,其中,所述***模块进一步包括:
***功能电路,可操作地耦合到所述第一数据寄存器,其中,所述***功能电路适于执行所述***模块的主要功能,以及将数据写入所述第一数据寄存器或者从所述第一数据寄存器读取数据。
15.如权利要求14所述的电子***,其中,所述***功能电路适于执行循环冗余校验计算。
16.如权利要求8所述的电子***,进一步包括:
处理元件,适于执行使所述处理元件执行x位宽的数据值的数据传输的机器可读代码,其中,执行数据传输包括提供第一读取/写入信号以及与所述***模块的所述第一数据寄存器相对应的处理元件提供的地址,以及其中,y小于x;以及
总线控制器,适于接收所述读取/写入信号和所述处理元件提供的地址,以及作为响应,执行一系列的多个与所述***模块的数据传输,其中,执行所述系列包括提供第二读取/写入信号和用于所述系列中第一数据传输的第一***地址,以及提供用于所述系列中至少一个其他数据传输的至少一个不同的***地址。
17.如权利要求8所述的电子***,其中,所述***模块是选自如下组的模块,所述组包括:循环冗余校验计算模块、校验和计算模块、串行***接口、通用异步接收器/发送器、显示器控制器、和用户接口控制器。
18.一种用于在处理元件和***模块之间传输数据的方法,所述方法包括如下步骤:
由所述***模块接收第一读取/写入信号以及来自地址总线的多个不同的地址;
由所述***模块将对应于所述多个不同的地址的多个不同的地址偏移映射到单个y位宽的数据寄存器,其中,映射所述多个不同的地址偏移的步骤包括:
将所述多个不同的地址偏移中的第一地址偏移映射到所述数据寄存器用于y位宽的数据传输;以及
将所述多个不同的地址偏移中的x/y个其他地址偏移映射到所述数据寄存器用于x位宽的数据传输,其中y小于x;以及
当所述第一读取/写入信号处于读取状态时由所述***模块将y位宽的数据值从所述y位宽的数据寄存器传输到数据总线,以及当所述第一读取/写入信号处于写入状态时将y位宽的数据值从所述数据总线传输到所述y位宽的数据寄存器中。
19.如权利要求18所述的方法,进一步包括如下步骤:
由所述处理元件执行使所述处理元件执行x位宽的数据值的数据传输的机器可读代码,其中,执行数据传输包括提供第二读取/写入信号以及与所述***模块的所述y位宽的数据寄存器相对应的处理元件提供的地址;
由总线控制器接收所述第二读取/写入信号和所述处理元件提供的地址;以及
由所述总线控制器响应于接收到所述第二读取/写入信号而执行一系列的多个与所述***模块的数据传输,其中执行所述系列包括提供第一读取/写入信号和用于所述系列中每个数据传输的所述多个不同的地址中的一个地址。
CN200980103655.9A 2008-02-15 2009-01-16 ***模块寄存器访问方法和装置 Active CN101933005B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/032,286 2008-02-15
US12/032,286 US8977790B2 (en) 2008-02-15 2008-02-15 Peripheral module register access methods and apparatus
PCT/US2009/031200 WO2009102529A1 (en) 2008-02-15 2009-01-16 Peripheral module register access methods and apparatus

Publications (2)

Publication Number Publication Date
CN101933005A CN101933005A (zh) 2010-12-29
CN101933005B true CN101933005B (zh) 2016-09-21

Family

ID=40956157

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200980103655.9A Active CN101933005B (zh) 2008-02-15 2009-01-16 ***模块寄存器访问方法和装置

Country Status (5)

Country Link
US (1) US8977790B2 (zh)
JP (1) JP5496916B2 (zh)
CN (1) CN101933005B (zh)
TW (1) TWI484407B (zh)
WO (1) WO2009102529A1 (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110238883A1 (en) * 2008-09-10 2011-09-29 Renesas Electronics Corporation Information processing device
US9069555B2 (en) 2011-03-21 2015-06-30 Intel Corporation Managing power consumption in a multi-core processor
JP6029433B2 (ja) * 2012-11-26 2016-11-24 ルネサスエレクトロニクス株式会社 マイコン
CN103885850B (zh) * 2013-03-01 2016-12-28 上海富欣智能交通控制有限公司 存储器在线检查***及方法
US9395990B2 (en) * 2013-06-28 2016-07-19 Intel Corporation Mode dependent partial width load to wider register processors, methods, and systems
CN104794092A (zh) * 2014-01-22 2015-07-22 比亚迪股份有限公司 总线逻辑管理***和方法
US10628373B2 (en) * 2015-12-01 2020-04-21 Marvell International Ltd. Systems and methods for transmitting an access request via a flexible register access bus
US10817587B2 (en) * 2017-02-28 2020-10-27 Texas Instruments Incorporated Reconfigurable matrix multiplier system and method
US10503582B2 (en) 2017-03-06 2019-12-10 Tttech Auto Ag Method and computer system for fault tolerant data integrity verification of safety-related data
CN107562658B (zh) * 2017-09-06 2024-05-28 北京世通凌讯科技有限公司 Cpu取指***及取指方法
JP2019101446A (ja) 2017-11-28 2019-06-24 ルネサスエレクトロニクス株式会社 半導体装置及びそれを備えた半導体システム
CN109547355B (zh) * 2018-10-17 2022-05-06 中国电子科技集团公司第四十一研究所 一种基于万兆以太网口接收机的存储解析装置及方法
CN109726057B (zh) * 2018-11-19 2022-07-22 浙江众合科技股份有限公司 一种cpu安全***并行总线故障实时动态检测方法
WO2020118713A1 (zh) * 2018-12-14 2020-06-18 深圳市汇顶科技股份有限公司 位宽匹配电路、数据写入装置、数据读出装置和电子设备
US20200201562A1 (en) * 2018-12-20 2020-06-25 Nanya Technology Corporation Memory device, memory system and method of reading from memory device
CN110322979B (zh) * 2019-07-25 2024-01-30 美核电气(济南)股份有限公司 基于fpga的核电站数字控制计算机***核心处理单元
CN110457254B (zh) * 2019-08-14 2021-08-24 飞依诺科技(苏州)有限公司 提高超声设备接口传输利用率的方法及***
CN111459546B (zh) * 2020-03-30 2023-04-18 芯来智融半导体科技(上海)有限公司 一种实现操作数位宽可变的装置及方法
US11288215B2 (en) * 2020-08-28 2022-03-29 Juniper Networks, Inc. Mapped register access by microcontrollers
CN113238974A (zh) * 2021-05-19 2021-08-10 青岛信芯微电子科技股份有限公司 一种总线带宽效率统计方法、装置、和设备及介质
CN117640783B (zh) * 2024-01-25 2024-04-09 富瀚微电子(成都)有限公司 一种数据传输方法、***、电子设备以及可读介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6111873A (ja) 1984-06-28 1986-01-20 Kokusai Electric Co Ltd 16ビツトマイクロプロセツサによる8ビツトおよび16ビツトの各周辺装置へのアクセス方法
JPH02123447A (ja) 1988-10-12 1990-05-10 Advanced Micro Devicds Inc 入力/出力制御器およびそのデータ転送方法
JPH05204837A (ja) 1991-09-13 1993-08-13 Matsushita Electric Ind Co Ltd 情報処理装置
US5511229A (en) 1991-09-13 1996-04-23 Matsushita Electric Industrial Co., Ltd. Data processing system having a switching network connecting multiple peripheral devices using data paths capable of different data bus widths
JPH05120211A (ja) 1991-10-28 1993-05-18 Matsushita Electric Ind Co Ltd データバス幅制御装置
JPH11212903A (ja) 1997-11-06 1999-08-06 Hitachi Ltd データ処理システム、周辺装置及びマイクロコンピュータ
TW406229B (en) 1997-11-06 2000-09-21 Hitachi Ltd Data process system and microcomputer
US6401156B1 (en) * 1999-08-23 2002-06-04 Advanced Micro Devices, Inc. Flexible PC/AT-compatible microcontroller
US20060143252A1 (en) * 2000-03-09 2006-06-29 Pkware, Inc. System and method for manipulating and managing computer archive files
US6816921B2 (en) 2000-09-08 2004-11-09 Texas Instruments Incorporated Micro-controller direct memory access (DMA) operation with adjustable word size transfers and address alignment/incrementing
US6593774B2 (en) * 2001-12-07 2003-07-15 Highpoint Technologies, Inc. CMOS-interfaceable ECL integrated circuit with tri-state and adjustable amplitude outputs
JP2003223412A (ja) 2002-01-30 2003-08-08 Oki Electric Ind Co Ltd 半導体集積回路
US7823161B2 (en) * 2004-01-29 2010-10-26 Klingman Edwin E Intelligent memory device with variable size task architecture
TWI285825B (en) * 2004-06-18 2007-08-21 Ambric Inc Hardware register on a chip, method of implementing a protocol register, machine-accessible medium embodying a data interface protocol or a software object, data pipeline element, data pipeline device, join element, fork element, data interface device...
KR20080002419A (ko) 2006-06-30 2008-01-04 엠텍비젼 주식회사 n비트의 CPU 및 이를 이용한 데이터 버스트 리드 방법

Also Published As

Publication number Publication date
JP2011512599A (ja) 2011-04-21
US8977790B2 (en) 2015-03-10
CN101933005A (zh) 2010-12-29
US20090210590A1 (en) 2009-08-20
TW200941341A (en) 2009-10-01
WO2009102529A1 (en) 2009-08-20
TWI484407B (zh) 2015-05-11
JP5496916B2 (ja) 2014-05-21

Similar Documents

Publication Publication Date Title
CN101933005B (zh) ***模块寄存器访问方法和装置
CN103221937B (zh) 用于处理集群的加载/存储电路
CN103092810B (zh) 处理器、对处理器编程的方法以及电子设备
US20140101347A1 (en) Isochronous Data Transfer Between Memory-Mapped Domains of a Memory-Mapped Fabric
CN104657306B (zh) 具有高速调试访问端口的集成电路
CN106030549B (zh) 用于对晶片外高速缓存存储器的标签集高速缓存的方法、装置和***
CN113849433B (zh) 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质
CN108108191A (zh) 一种soc芯片及soc芯片cpu指令集的配置方法
CN104021099B (zh) 一种控制数据传输的方法及dma控制器
CN103678187A (zh) 一种微控制单元及其控制方法
WO2023202148A1 (zh) 一种寄存器调试平台和调试方法
EP3065056B1 (en) Hardware interface component and method therefor
CN103869275B (zh) 一种单相智能电能表的计量精度校准方法
US8659318B1 (en) Systems and methods for implementing tristate signaling by using encapsulated unidirectional signals
CN206003078U (zh) 一种模块化机载存储器读写装置
CN107727930A (zh) 智能型高精度模拟信号采样***和采样方法
CN111143273B (zh) 一种片上***
WO2006004166A1 (en) Data processing unit and compatible processor
Yi et al. Design of USB-UART interface converter and its FPGA implementation
CN110299183A (zh) In-LineECC模块及其实现方法
CN117762701A (zh) 芯片、部件调试方法、装置、计算机设备、存储介质
CN207924015U (zh) 一种智能型高精度模拟信号采样***
US12039294B2 (en) Device and method for handling programming language function
CN102147447A (zh) 一种控制数据透传的方法、柔性标签连接方法及其装置
US6658547B1 (en) Method and apparatus for specifying address offsets and alignment in logic design

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
CP01 Change in the name or title of a patent holder

Address after: Texas in the United States

Patentee after: NXP America Co Ltd

Address before: Texas in the United States

Patentee before: Fisical Semiconductor Inc.

CP01 Change in the name or title of a patent holder