CN102934074B - 经压缩代码的加速执行 - Google Patents

经压缩代码的加速执行 Download PDF

Info

Publication number
CN102934074B
CN102934074B CN201180027382.1A CN201180027382A CN102934074B CN 102934074 B CN102934074 B CN 102934074B CN 201180027382 A CN201180027382 A CN 201180027382A CN 102934074 B CN102934074 B CN 102934074B
Authority
CN
China
Prior art keywords
pointer
memory element
embedded code
instruction addresses
code instruction
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.)
Expired - Fee Related
Application number
CN201180027382.1A
Other languages
English (en)
Other versions
CN102934074A (zh
Inventor
E·鲍林
M·小布莱特尼兹
N·伯恩
S·阿弗尼
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of CN102934074A publication Critical patent/CN102934074A/zh
Application granted granted Critical
Publication of CN102934074B publication Critical patent/CN102934074B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Manipulator (AREA)
  • Supply Devices, Intensifiers, Converters, And Telemotors (AREA)

Abstract

描述了涉及加速经压缩代码的执行的方法和装置。在一个实施例中,使用两级嵌入式代码解压缩方案,其消除气泡,这可增大速度和/或降低功耗。也描述并要求保护其他的实施例。

Description

经压缩代码的加速执行
领域
本公开一般涉及计算领域。更具体地,本发明的实施例一般涉及经压缩代码的加速执行。
背景
许多应用对于代码大小尺寸(codesizefootprint)是敏感的。一个关键示例是移动应用,该移动应用可使用基于只读存储器(ROM)的系统,其中永久性存储器存储是整体系统成本、大小、或功耗中的关键因素。在一些实例中,代码压缩可被用来减轻这些问题中的至少一些,有时因所需的经压缩代码的飞行(on-the-fly)解压缩而带来性能降低和/或功耗增加。
附图简述
参照附图提供详细描述。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。在不同附图中使用相同附图标记来指示相似或相同的项目。
图1和2分别例示了在压缩之前和之后的嵌入式编码压缩。
图3、5和7例示了根据一些实施例的流水线化解压缩器的框图。
图4和6例示了根据一些实施例的流入流水线化解压缩器的数据。
图8是根据本发明的实施例的方法的流程图。
图9和10例示了可用于实现本文中所讨论的一些实施例的计算系统的实施例的框图。
图11例示是根据一些实施例的无线局域或蜂窝网通信系统的框图。
详细描述
在以下描述中,阐述众多具体细节以提供对各实施例的透彻理解。然而,本发明的各个实施例在没有这些具体细节的情况下也可实践。在其他情形中,众所周知的方法、过程、组件和电路并未进行详细描述以免混淆本发明的特定实施例。此外,本发明实施例的各方面可使用各种手段来执行,诸如集成半导体电路(“硬件”)、组织成一个或多个程序的计算机可读指令(“软件”)或硬件与软件的某种组合。出于本公开的目的,对“逻辑”的引述应表示硬件、软件(包括例如控制处理器的操作的微代码)或其某种组合。
一些实施例例如通过减少或消除最频繁执行的代码流的性能开销、减少功耗和/或减小代码大小来提升两级嵌入式代码解压缩方案。一般而言,嵌入式代码压缩旨在标识组成嵌入式码字的一组独特比特模式以及旨在将其存储在表(也称为“词典”)中。经压缩的嵌入式代码存储原始嵌入式码字序列中的每个模式的(短的)独特标识符,如图1和2中所示的。此外,实施例在指定代码词典或存储器中的值的位置时利用弹性,以实现对初始指针值的更高效推导。此类实施例可在避免解压缩性能中的额外成本的同时达成由嵌入式代码压缩所提供的益处。
在图1和2中,addr(地址)指的是嵌入式代码指令的地址。在未经压缩的形式下(参见例如图1),addr直接访问ROM以取得嵌入式代码指令(inst)。在经压缩的形式下(参见例如图2),独特嵌入式代码指令被存储在“独特模式”表/阵列202(或词典)中,并且仅仅指向模式的索引(指针)被存储在嵌入式代码指令的原始空隙中(指针阵列204)。这种组织使用两级过程来解压嵌入式码字:在第一级中,访问指针阵列204来取得进入独特模式阵列202的索引(指针),进而访问该独特模式阵列202来提供字。假定原始ROM具有6500个嵌入式码字,每个嵌入式码字具有312比特,并且有总共2005个独特嵌入式码字。原始ROM占用(312x6500)2,028,000比特,而经压缩的ROM仅占用(6500*11+312*2005)697,060比特(其中11是对独特模式阵列202中的2005个条目进行索引所需的比特数目)。因而,压缩率(经压缩的大小/原始大小)为34.37%。因此,用于嵌入式代码解压缩的先前方法可能引发流改变下的性能成本。为此,一些实施例在实现压缩的同时避免此性能影响。
在各个实施例中,本文中讨论的指针阵列和独特模式阵列/表可在分开的存储单元(诸如参照图9或10讨论的存储器)上实现,或者被实现为同一存储单元(诸如参照图9或10讨论的存储器)内的区域。
图3示出根据实施例的流水线化解压缩器的框图。在图3、5和7中,R1、R2和R3指的是可被用来临时存储在流水线级之间传递的数据的寄存器或先进先出(FIFO)缓冲器。图4例示了根据实施例的流入图3的流水线化解压缩器的数据。
参看图3,经压缩的组织将利用对“独特模式”表302的间接访问。此间接增加从存储代码的存储器取得指令所需的时间。注意:在从独特模式阵列302取得指令之前,从指针阵列304取得指针。如果用于从阵列302和304两者进行获取的时间段并非是短至足以符合处理器周期时间(例如,小于或等于处理器的一个周期),则其会影响处理器性能。为了确保此时间段符合处理器周期时间,经压缩的ROM可仅使用固定大小代码指令和/或被流水线化。图3示出了被流水线化为两级的解压缩器。第一流水线级包括指针阵列304,而第二流水线级包括独特模式表/阵列302。
在执行期间,‘addr’地址序列被呈现给经压缩的ROM。在图3的流水线解压缩器中,地址最初被呈现给指针阵列304。在下一级中,这产生访问独特模式阵列302的指针,而同时新‘addr’被呈现给指针阵列304,且具有每周期一个字的吞吐量。只要开始新‘addr’序列,此流水线化组织就引发一周期“气泡(bubble)”。在重新开始流水线时,“气泡”发生。这例如在嵌入式码流的起始处或在跳跃期间发生。一般而言,“气泡”是指示流水线级(包含气泡的级)没有执行任何有用工作的象征性表示。
参看图4,示出了流入图3的流水线化解压缩器的数据。在第一周期(周期1)中,指针阵列304的输入包含第一指令地址(Addr1)。在第二周期(周期2)中,第二指令地址(Addr2)被提供给指针阵列304,而第一指针(指针1)被提供给独特模式阵列302。气泡在R2处发生,因为解压缩器在第一周期中无法向独特模式阵列提供指针。
图5示出根据实施例的流水线化解压缩器的框图。图5的实施例通过将第一指针(指针1)直接(例如,绕开指针阵列504)提供给独特模式阵列502,与此同时第二地址(Addr2)被提供给指针阵列504,来避免R1处的气泡(参照图3-4所讨论的)。如图所示,多路复用器可选择第一指针或指针阵列504的输出来经由R2传送给第二流水线。因而,第一指令是在新流的第一周期中从独特模式阵列502直接取得的,而第二指令的地址(‘addr’)被用来“准备启动(prime)”流水线。
图6示出了例如在第一指针被直接提供给独特模式阵列时,流入图5的流水线化解压缩器的数据。注意:与图4相比,第一周期(周期1)中的气泡已被移除。在第一周期中,指针阵列504的输入包含第二指令地址,而独特模式阵列502的输入包含指向指令的指针。在第二周期(周期2)中,第三指令地址被提供给指针阵列504,而第二指针被提供给独特模式阵列502。在此示例中,解压缩器能在第一周期中向独特模式阵列提供指针,从而消除气泡。
图7示出根据实施例的流水线化解压缩器的框图。图5中的组织在图7中通过避免用于额外地址比特(和逻辑)的总线布线而得以增补。替代地,第一指针是由推导逻辑702从第二指令地址(‘addr’)推导出的。在一实施例中,“推导”逻辑可通过选择‘addr’中的比特子集来生成第一指针,因此在至少一个实施例中,用于推导的逻辑可简单地通过将所选比特写入多路复用器中来实现。
在一个实施例中,通过重新安排模式在独特模式阵列中的位置,可更改存储在指针阵列中的值(指针的值)。出于例示起见,假定指令“ADDR,R”是嵌入式码流中的第一指令。可在独特模式阵列中将此指令模式存储在其中索引为第二指令地址(Addr2)的子集的位置处,因此可容易地从第二地址导出第一指针。例如,如果Addr1=000100,而Addr2=000101,则“ADDR,R”指令可被存储在独特模式阵列里的位置0101中,因此其地址可从Addr2的低阶4比特来直接推导出。在流的起始处,Addr2可被提供给R1,而其低阶4比特(0101)可被提供给R2,从而从独特模式阵列直接取得第一指令。
而且,这样的一个实施例可牺牲一些压缩(换取提升的性能),因为可构想″ADDR,R″指令可被另一流共享,这要求将其复制在独特模式阵列中以使其指针数据独立。然而,此复制仅对于在流的开始处的(相对少的)不同指令才发生。另外,简档化可被用来仅选择和优化最频繁执行的流,从而使气泡留在最不频繁的流中。
图8示出根据实施例的用于提升嵌入式代码的方法800的框图。方法800的操作可由本文中例如参照图1-7和/或9-11讨论的一个或多个组件来执行。
参看图8,在操作802,(如现前所描述地)确定经压缩的嵌入式代码组织,例如,生成分别由P和U比特索引的指针阵列和独特模式阵列。在操作804,标识一组S个嵌入式代码地址(addr),该组S个嵌入式代码地址是(例如重要)流的第二指令。此外,嵌入式代码可包含多个流。每个流包含一指令序列。这些指令中的每一个与诸如addr1、addr2、addr3、addrN之类的地址相关联。Addr2是流的第二指令的地址。因而,操作804标识与每个流的第二指令相对应的一组地址。因此,如果代码具有10个重要流或感兴趣的流,则将存在带有10个地址的集合,其中每个地址是每个流中的第二指令的地址。在操作806,对于S的每个元素,相应的指令模式被添加到独特模式指令,例如以使得可从第二指令地址容易地推导出模式索引。在一实施例中,可将模式放在其中模式索引(包含U比特)与流中的第二地址(Addr2)的P比特子集相对应的的位置处。
因此,在一些实施例中,可通过以下操作从嵌入式压缩码流移除气泡,以增大速度和/或降低成本:(1)直接提供流中的第一指令的模式索引,以避免流水线化气泡;(2)从指令地址推导出模式索引;和/或(3)重新定位独特模式阵列中的模式以简化用于从指令地址推导模式索引的逻辑。
在一实施例中,通过选择性地应用本文中(例如,参照图1-8)所讨论的技术来用压缩率来换取性能是可能的。例如,这些技术限于对初始流水线‘气泡’延迟更加敏感的重要的、短的嵌入式指令流。而且,对一个额外周期较不敏感的相对长的、罕见的流可在不利用此类技术的情况下执行。此外,在嵌入式代码链路级,可重新组织嵌入式代码来最小化流的开始处的不同的独特指令的数目;由此保持压缩率。
图9示出计算系统900的实施例的框图。在各个实施例中,系统900的一个或多个组件可设置在能执行本文中参照本发明一些实施例所讨论的一个或多个操作的各种电子器件中。例如,系统900的组件中的一个或多个可被用来执行参照图1-8和10-11讨论的操作。另外,本文(例如参照图9和/或10)讨论的各种存储设备可用于存储数据(包括指令)、运算结果等。在一个实施例中,与图9的方法900的操作相关联的数据可被存储在存储器设备(诸如图9的处理器902或图10的处理器1002/1004中存在的存储器912或者一个或多个高速缓存(例如,实施例中的L1、中级、或末级高速缓存))。
此外,计算系统900可包括经由互连网络(或总线)902通信的一个或多个中央处理单元(CPU)904或处理器。处理器902可包括通用处理器、网络处理器(处理在计算机网络903上传达的数据),或者其他类型的处理器(包括精简指令集计算机(RISC)处理器或复杂指令集计算机(CISC))。此外,处理器902可具有单核或多核设计。具有多核设计的处理器902可将不同类型的处理器核集成在同一集成电路(IC)管芯上。同样,具有多核设计的处理器902可被实现为对称或不对称多处理器。此外,处理器902可利用SIMD(单指令多数据)架构。此外,参照图1-8讨论的操作可由系统900的一个或多个部件执行。而且,如图9中所示的,处理器902中的一个或多个可包括(嵌入式)逻辑990,其可与参照图1-8讨论的解压缩器相同或类似。然而,本发明的其它实施例可存在于图9的系统900内的其它电路、逻辑单元或设备中。
芯片组906也可与互连网络904通信。芯片组906可包括存储器控制器中枢(MCH)908。MCH908可包括与存储器912通信的存储器控制器910。存储器912可存储数据,例如包括由CPU902或包含在计算系统900中的任何其它设备执行的指令序列。在本发明的一个实施例中,存储器912可包括一个或多个易失性存储(或存储器)设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)、或其他类型的存储设备。还可使用诸如硬盘之类的非易失性存储器。诸如多个CPU和/或多个系统存储器之类的附加设备可经由互连网络904来进行通信。
MCH908还可包括与显示器916通信的图形接口914。显示器916可用于向用户显示与本文中讨论的布朗桥(BrownianBridge)算法相关联的操作的结果。在本发明的一个实施例中,图形接口914可与显示器916通信。在本发明的实施例中,显示器916可以是通过例如信号转换器与图形接口914通信的平板显示器,该信号转换器将诸如视频存储器或系统存储器之类的存储设备中存储的图像的数字表示转换成由显示器916解析和显示的显示信号。由接口914产生的显示器信号可经过各种控制设备,然后由显示器916解读并后续在显示器916上显示。
中枢接口918可允许MCH908与输入/输出控制中枢(ICH)920通信。ICH920可向与计算系统900通信的I/O设备提供接口。ICH920可通过诸如外围组件互连(PCI)桥路、通用串行总线(USB)控制器或其他类型的外围桥路或控制器等外围桥路(或控制器)924与总线922通信。桥924可在CPU902和外围设备之间提供数据路径。可使用其它类型的布局。同样,多个总线可例如通过多个桥或控制器来与ICH920通信。另外,在本发明的各实施例中,与ICH920处于通信中的其它外围设备可包括集成的驱动电子(IDE)或小型计算机系统接口(SCSI)硬盘驱动器、USB端口、键盘、鼠标、并行端口、串行端口、软盘驱动器、数字输出支持(例如,数字视频接口(DVI))、或其他设备。
总线922可与音频设备926、一个或多个盘驱动器928以及可与计算机网络903通信的网络接口设备930通信。在一实施例中,设备930可以是能够进行无线通信的NIC。其他设备可经由总线922通信。同样,在本发明的一些实施例中,各组件(诸如网络接口设备930)可与MCH908通信。此外,可组合处理器902和MCH908,以形成单个芯片。此外,在本发明的其他实施例中,图形接口914可被包括在MCH908内。
此外,计算系统900可包括易失性和/或非易失性存储器(或存储)。例如,非易失性存储器可包括以下的一个或多个:只读存储器(ROM)、可编程ROM(PROM)、可擦除PROM(EPROM)、电RPROM(EEPROM)、盘驱动器(例如,928)、软盘、紧致盘ROM(CD-ROM)、数字多功能盘(DVD)、闪存、磁光盘或能够储存电子数据(例如,包括指令)的其它类型的非易失性机器可读介质。在一实施例中,系统900的组件可安排成诸如参照图10讨论的点对点(PtP)配置。例如,处理器、存储器、和/或输入/输出设备可通过多个点对点接口互连。
更具体地,图10示出了根据本发明实施例的以点对点(PtP)结构布置的计算系统1000。具体地,图10示出其中处理器、存储器和输入/输出设备通过多个点对点接口互连的系统。参照图1-9和11讨论的操作可由系统1000的一个或多个部件执行。
如图10所示,系统1000可包括若干处理器,但为了清楚起见仅示出了其中两个处理器1002、1004。处理器1002和1004各自可包括本地存储器控制器中枢(MCH)1006和1008以与存储器1010和1012耦合。存储器1010和/或1012可存储诸如参考图9的存储器912讨论的数据之类的各种数据。
处理器1002和1004可以是任何合适的处理器,诸如参照图9的处理器902所讨论的那些。处理器1002和1004可分别使用点对点(PtP)接口电路1016和1018经由PtP接口1014来交换数据。处理器1002和1004可各自使用点对点接口电路1026、1028、1030和1032经由各PtP接口1022和1024与芯片组1020交换数据。芯片组1020还可利用PtP接口电路1034经由高性能图形接口1036与高性能图形电路1037交换数据。
本发明的至少一个实施例可通过利用处理器1002和1004来提供。例如,如图10中所示的,处理器1002/1004的一个或多个可包括(嵌入式)逻辑990,其可与参照图1-8讨论的解压缩器相同或类似。然而,本发明的其它实施例可存在于图10的系统1000内的其它电路、逻辑单元或设备中。而且,本发明的其它实施例可分布在图10中所示若干电路、逻辑单元或设备中。
芯片组1020可使用PtP接口电路1041耦合到总线1040。总线1040可具有耦合至其的一个或多个设备,诸如总线桥1042和I/O设备1043。总线桥路1043可经由总线1044耦合到其他设备,诸如键盘/鼠标1045、参照图10讨论的网络接口设备1030(诸如调制解调器、网络接口卡(NIC)或者可耦合到计算机网络903的类似设备)、音频I/O设备和/或数据存储设备1048。数据存储设备1048可存储由处理器1002和/或1004执行的代码1049。
参看图11,将讨论根据一个或多个实施例的无线局域网或蜂窝网络通信系统1100的框图。在图11所示的通信系统1100中,移动设备1110可包括耦合到天线1118以及诸如处理器之类的逻辑1114(例如,以提供基带和媒体接入控制(MAC)处理功能)的无线收发机1112。在一些实施例中,本文中讨论的计算系统中的一个或多个可包括参照无线设备1110讨论的组件中的一个或多个。而且,计算设备1102可包括本文中参照图1-10讨论的系统/设备的一个或多个组件。
在一些实施例中,无线设备1110可以是蜂窝电话或者诸如移动个人计算机或个人数字助理之类的结合了蜂窝电话通信模块的信息处理系统。一个实施例中的逻辑1114可包括单个处理器,或者替代地可包括基带处理器和应用处理器(例如,其中参照图11讨论的每个处理器可包括一个或多个处理器核,或者可以是与参照图1-10讨论的处理器相同或类似)。逻辑1114耦合至存储器1116,该存储器1116可包括诸如动态随机存取存储器(DRAM)的易失性存储器、诸如闪存的非易失性存储器,或者替代地可包括诸如硬盘驱动器之类的其他类型的存储。存储器1116的某部分或全部可被包括在与逻辑1114相同的集成电路上,或者替代地,存储器1116的某部分或全部可被置于集成电路或在逻辑1114的集成电路之外的其它介质(例如硬盘驱动器)上。
无线设备1110可经由无线通信链路与接入点1122通信,其中接入点1122可包括以下各项中的一个或多个:天线1120、收发机1124、处理器1126、和存储器1128。如图11中所示的,无线设备1110和/或接入点1122中的一个或多个可包括(嵌入式)逻辑990,该(嵌入式)逻辑可以是与参照图1-10讨论的解压缩器相同或类似。在一个实施例中,接入点1122可以是蜂窝电话网络的基站,并且在另一实施例中,接入点1122可以是无线局域网或个域网的接入点或无线路由器。在一实施例中,接入点1122(以及任选的无线设备1110)可包括两个或更多个天线,例如,用于提供空分多址(SDMA)系统或多输入多输出(MIMO)系统。接入点1122可与网络903耦合,使得无线设备1110可以通过经由无线通信链路与接入点1122通信来与网络903(包括与网络903耦合的设备)通信。网络903可包括诸如电话网或因特网之类的公共网络,或者替代地,网络903可包括诸如内联网之类的私有网络,或者公共网络和私有网络的组合。无线设备1110与接入点1122之间的通信可经由无线局域网(WLAN)来实现。在一个实施例中,无线设备1110与接入点1122之间的通信可至少部分地经由遵循第三代作伙伴计划(3GPP或3G)标准的蜂窝通信网络来实现。在一些实施例中,天线1118可被用在无线传感器网络或网状网络中。
在本发明的各个实施例中,本文中例如参照图1-11所讨论的操作可实现为硬件(例如,逻辑电路)、软件(包括例如控制诸如处理器之类的处理器的操作的微代码)、固件或其组合,它们可作为计算机程序产品来提供,例如包括其上存储有用于编程计算机(例如,计算设备的处理器或其他逻辑)以执行本文所讨论的操作的指令(或软件程序)的有形机器可读或计算机可读介质。机器可读介质可包括本文所讨论的存储设备。
此外,此类有形计算机可读介质可下载为计算机程序产品,其中该程序可通过传播介质中的数据信号经由通信链路(例如,总线、调制解调器或网络连接)从远程计算机(例如,服务器)传递到请求计算机(例如,客户机)。
在本说明书中对“一个实施例”或“实施例”的参考表示结合实施例描述的特定特征、结构或特性包括在至少一个实现中。在说明书的各位置出现的短语“在一个实施例中”不一定全指同一实施例。
同样,在说明书和权利要求书中,可使用术语“耦合”和“连接“及其衍生词。在本发明的一些实施例中,“连接”可用于指示两个或多个元件相互直接物理或电接触。“耦合”可表示两个或更多元件直接物理或电接触。然而,“耦合”还可表示两个或多个元件没有彼此直接接触,但彼此仍协作或相互作用。
因此,虽然用结构特征和/或方法动作专属语言描述了本发明的实施例,但是应当理解所保护的主题可不限于所描述的具体特征或动作。相反,该特定特征和动作被公开作为实现所保护主题的样本形式。

Claims (30)

1.一种用于经压缩代码的加速执行的装置,包括:
第一存储单元,用于存储与嵌入式代码指令地址相对应的指针,其中第一指针通过选择所述嵌入式代码指令地址中的比特子集来生成;
第二存储单元,用于存储与所述指针相对应的独特嵌入式代码指令;以及
用于执行所存储的嵌入式代码指令的处理器,其中所述第一存储单元响应于在第一存储单元处对所述嵌入式代码指令地址的接收而向所述第二存储单元传送所述指针,以及
其中所述第二存储单元响应于在所述第二存储单元处对所述指针的接收而输出所述独特嵌入式代码指令,并且其中在所述处理器的单个周期期间,在第一指针被发送到所述第二存储单元同时,第二嵌入式代码指令地址被发送到所述第一存储单元。
2.如权利要求1所述的装置,其特征在于,所述第二存储单元在新嵌入式代码指令地址序列的第一周期期间并且在第二指针之前接收第一指针,所述第一指针与第一嵌入式代码指令地址相对应,所述第二指针与第二嵌入式代码指令地址相对应。
3.如权利要求2所述的装置,其特征在,所述第二存储单元从所述第一存储单元接收第二指针,以及通过绕开所述第一存储单元接收所述第一指针。
4.如权利要求1所述的装置,其特征在于,所述第二存储单元在新嵌入式代码指令地址序列的第一周期期间并且在第二指针之前接收第一指针,所述第一指针与第一嵌入式代码指令地址相对应,所述第二指针与第二嵌入式代码指令地址相对应,其中所述第一指针将是从所述第二嵌入式代码指令地址推导出的值。
5.如权利要求1所述的装置,其特征在于,在每个后继处理器周期期间,在新嵌入式代码指令地址序列的第一周期之后,将从所述第一存储单元取得至少一个指针,并且将从所述第二存储单元取得至少一个独特嵌入式代码指令。
6.如权利要求1所述的装置,其特征在于,用于从第一存储单元取得所述指针以及从所述第二存储单元取得所述独特嵌入式代码指令的时间段等于或小于所述处理器的一个周期。
7.如权利要求1所述的装置,其特征在于,所述独特嵌入式代码指令包括存储在所述第二存储单元中的一组独特比特模式,所述一组独特比特模式组成嵌入式码字。
8.如权利要求1所述的装置,其特征在于,还包括只读存储器,其中所述只读存储器包括所述第一存储单元或所述第二存储单元。
9.如权利要求1所述的装置,其特征在于,还包括至少一个缓冲器或寄存器,其用于耦合所述第一存储单元和所述第二存储单元。
10.如权利要求1所述的装置,其特征在于,还包括多路复用器,其用于耦合所述第一存储单元和所述第二存储单元。
11.如权利要求1所述的装置,其特征在于,所述处理器、所述第一存储单元或所述第二存储单元中的一个或多个在同一集成电路管芯上。
12.如权利要求1所述的装置,其特征在于,所述处理器包括多个处理器核。
13.一种用于经压缩代码的加速执行的方法,包括:
将与嵌入式代码指令地址相对应的指针存储在第一存储单元中,其中第一指针通过选择所述嵌入式代码指令地址中的比特子集来生成;
将与所述指针相对应的独特嵌入式代码指令存储在第二存储单元中;以及
其中所述第一存储单元响应于在第一存储单元处对所述嵌入式代码指令地址的接收而向所述第二存储单元传送所述指针,以及
其中所述第二存储单元响应于在所述第二存储单元处对所述指针的接收而输出所述独特嵌入式代码指令,并且在处理器的单个周期期间,在第一指针被发送到所述第二存储单元同时,第二嵌入式代码指令地址被发送到所述第一存储单元。
14.如权利要求13所述的方法,其特征在于,还包括在新嵌入式代码指令地址序列的第一周期期间并且在第二指针之前在所述第二存储单元处接收第一指针,所述第一指针与第一嵌入式代码指令地址相对应,所述第二指针与第二嵌入式代码指令地址相对应。
15.如权利要求14所述的方法,其特征在,还包括在所述第二存储单元处从所述第一存储单元接收第二指针,以及通过绕开所述第一存储单元接收所述第一指针。
16.如权利要求13所述的方法,其特征在于,还包括在新嵌入式代码指令地址序列的第一周期期间并且在第二指针之前在所述第二存储单元处接收第一指针,所述第一指针与第一嵌入式代码指令地址相对应,所述第二指针与第二嵌入式代码指令地址相对应,其中所述第一指针将是从所述第二嵌入式代码指令地址推导出的值。
17.如权利要求13所述的方法,其特征在于,还包括在每个后继处理器周期期间,在新嵌入式代码指令地址序列的第一周期之后,从所述第一存储单元取得至少一个指针,并且从所述第二存储单元取得至少一个独特嵌入式代码指令。
18.一种计算系统,包括:
用于存储指针阵列和独特模式阵列的存储器,其中所述指针阵列存储与嵌入式代码指令地址相对应的指针,而所述独特模式阵列存储与所述指针相对应的独特嵌入式代码指令,其中第一指针通过选择所述嵌入式代码指令地址中的比特子集来生成;
用于执行所存储的嵌入式代码指令的处理器,其中所述指针阵列响应于在所述指针阵列处对所述嵌入式代码指令地址的接收向所述独特模式阵列传送所述指针,并且其中所述独特模式阵列响应于在所述独特模式阵列处对所述指针的接收输出独特嵌入式代码指令,并且其中在所述处理器的单个周期期间,在第一指针被发送到第二存储单元同时,第二嵌入式代码指令地址被发送到第一存储单元。
19.如权利要求18所述的系统,其特征在于,所述独特模式阵列在新嵌入式代码指令地址序列的第一周期期间并且在第二指针之前接收第一指针,所述第一指针与第一嵌入式代码指令地址相对应,所述第二指针与第二嵌入式代码指令地址相对应。
20.如权利要求19所述的系统,其特征在于,所述独特模式阵列从所述指针阵列接收所述第二指针,以及通过绕开所述指针阵列接收所述第一指针。
21.如权利要求18所述的系统,其特征在于,所述独特模式阵列在新嵌入式代码指令地址序列的第一周期期间并且在第二指针之前接收第一指针,所述第一指针与第一嵌入式代码指令地址相对应,所述第二指针与第二嵌入式代码指令地址相对应,其中所述第一指针是从所述第二嵌入式代码指令地址推导出的值。
22.如权利要求18所述的系统,其特征在于,在每个后继处理器周期期间,在新嵌入式代码指令地址序列的第一周期之后,将从所述指针阵列取得至少一个指针,并且将从所述独特模式阵列取得至少一个独特嵌入式代码指令。
23.如权利要求18所述的系统,其特征在于,用于从指针阵列取得所述指针以及从所述独特模式阵列取得所述独特嵌入式代码指令的时间段等于或小于所述处理器的一个周期。
24.如权利要求18所述的系统,其特征在于,所述独特嵌入式代码指令包括存储在所述独特模式阵列中的一组独特比特模式,所述一组独特比特模式组成嵌入式码字。
25.如权利要求18所述的系统,其特征在于,所述存储器包括只读存储器。
26.一种用于经压缩代码的加速执行的设备,包括:
用于将与嵌入式代码指令地址相对应的指针存储在第一存储单元中的装置,其中第一指针通过选择所述嵌入式代码指令地址中的比特子集来生成;
用于将与所述指针相对应的独特嵌入式代码指令存储在第二存储单元中的装置;以及
其中所述第一存储单元响应于在第一存储单元处对所述嵌入式代码指令地址的接收而向所述第二存储单元传送所述指针,以及
其中所述第二存储单元响应于在所述第二存储单元处对所述指针的接收而输出所述独特嵌入式代码指令,并且其中在处理器的单个周期期间,在第一指针被发送到所述第二存储单元同时,第二嵌入式代码指令地址被发送到所述第一存储单元。
27.如权利要求26所述的设备,其特征在于,还包括用于在新嵌入式代码指令地址序列的第一周期期间并且在第二指针之前在所述第二存储单元处接收第一指针的装置,所述第一指针与第一嵌入式代码指令地址相对应,所述第二指针与第二嵌入式代码指令地址相对应。
28.如权利要求27所述的设备,其特征在于,还包括用于在所述第二存储单元处从所述第一存储单元接收所述第二指针,以及通过绕开所述第一存储单元接收所述第一指针的装置。
29.如权利要求26所述的设备,其特征在于,还包括用于在新嵌入式代码指令地址序列的第一周期期间并且在第二指针之前在所述第二存储单元处接收第一指针的装置,所述第一指针与第一嵌入式代码指令地址相对应,所述第二指针与第二嵌入式代码指令地址相对应,其中所述第一指针是从所述第二嵌入式代码指令地址推导出的值。
30.如权利要求26所述的设备,其特征在于,还包括用于在每个后继处理器周期期间,在新嵌入式代码指令地址序列的第一周期之后,从所述第一存储单元取得至少一个指针,并且从所述第二存储单元获取至少一个独特嵌入式代码指令的装置。
CN201180027382.1A 2010-06-27 2011-06-27 经压缩代码的加速执行 Expired - Fee Related CN102934074B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/824,187 US20110320775A1 (en) 2010-06-27 2010-06-27 Accelerating execution of compressed code
US12/824,187 2010-06-27
PCT/US2011/041967 WO2012012112A2 (en) 2010-06-27 2011-06-27 Accelerating execution of compressed code

Publications (2)

Publication Number Publication Date
CN102934074A CN102934074A (zh) 2013-02-13
CN102934074B true CN102934074B (zh) 2016-07-13

Family

ID=45353683

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180027382.1A Expired - Fee Related CN102934074B (zh) 2010-06-27 2011-06-27 经压缩代码的加速执行

Country Status (8)

Country Link
US (1) US20110320775A1 (zh)
EP (1) EP2585907B1 (zh)
JP (1) JP5662567B2 (zh)
KR (1) KR101468424B1 (zh)
CN (1) CN102934074B (zh)
AU (1) AU2011280088B2 (zh)
TW (1) TWI526929B (zh)
WO (1) WO2012012112A2 (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1735860A (zh) * 2003-01-09 2006-02-15 国际商业机器公司 用于指令压缩的方法和装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS6375833A (ja) * 1986-09-18 1988-04-06 Toshiba Corp 情報処理装置
US5222244A (en) * 1990-12-20 1993-06-22 Intel Corporation Method of modifying a microinstruction with operands specified by an instruction held in an alias register
JP3201716B2 (ja) * 1996-02-22 2001-08-27 シャープ株式会社 コンピュータ装置
KR100448289B1 (ko) * 1997-12-20 2004-11-16 주식회사 대우일렉트로닉스 스트링매칭모듈을갖는데이터압축시스템
US6263429B1 (en) * 1998-09-30 2001-07-17 Conexant Systems, Inc. Dynamic microcode for embedded processors
US6691305B1 (en) * 1999-11-10 2004-02-10 Nec Corporation Object code compression using different schemes for different instruction types
JP2001142696A (ja) * 1999-11-15 2001-05-25 Matsushita Electric Ind Co Ltd マイクロプロセッサにおける命令供給装置および命令供給方法
US6484228B2 (en) * 2000-04-19 2002-11-19 Motorola, Inc. Method and apparatus for data compression and decompression for a data processor system
JP2003044273A (ja) * 2001-08-01 2003-02-14 Nec Corp データ処理装置及びデータ処理方法
JP3729759B2 (ja) * 2001-08-07 2005-12-21 株式会社ルネサステクノロジ 圧縮された命令コードを読み出すマイクロコントローラ、命令コードを圧縮して格納するプログラムメモリ
JP3792633B2 (ja) * 2002-10-17 2006-07-05 株式会社ルネサステクノロジ マイクロコントローラ、及びマイクロコントローラ装置
US7715392B2 (en) * 2002-12-12 2010-05-11 Stmicroelectronics, Inc. System and method for path compression optimization in a pipelined hardware bitmapped multi-bit trie algorithmic network search engine
US20040128477A1 (en) * 2002-12-13 2004-07-01 Ip-First, Llc Early access to microcode ROM
US8099587B2 (en) * 2005-07-20 2012-01-17 Intel Corporation Compressing and accessing a microcode ROM
US7334113B2 (en) * 2005-09-07 2008-02-19 National Chung Cheng University Method and system for processing an instruction set
US8219508B2 (en) * 2007-07-06 2012-07-10 Lsi Corporation Systems and methods for compressing state machine instructions using a two access indexing scheme

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1735860A (zh) * 2003-01-09 2006-02-15 国际商业机器公司 用于指令压缩的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Two-level dictionary code compression:a new scheme to improve instruction code density of embedded applications;Mikael Collin等;《2009 International Symposium on Code Generation and Optimization》;20090325;第233页左栏第3段-第235页右栏倒数第3段 *

Also Published As

Publication number Publication date
WO2012012112A2 (en) 2012-01-26
KR101468424B1 (ko) 2014-12-03
EP2585907A4 (en) 2016-05-25
KR20130038886A (ko) 2013-04-18
JP5662567B2 (ja) 2015-02-04
AU2011280088B2 (en) 2015-01-22
EP2585907A2 (en) 2013-05-01
JP2013528877A (ja) 2013-07-11
AU2011280088A1 (en) 2013-01-24
TWI526929B (zh) 2016-03-21
US20110320775A1 (en) 2011-12-29
WO2012012112A3 (en) 2012-04-05
EP2585907B1 (en) 2018-05-16
CN102934074A (zh) 2013-02-13
TW201211886A (en) 2012-03-16

Similar Documents

Publication Publication Date Title
JP5945291B2 (ja) デフレート圧縮のために高速で高圧縮のlz77トークン化及びハフマンエンコーディングを行う並列装置
JP4955547B2 (ja) 異なる通信標準を同時に実施するための低電力の再構成可能なアーキテクチャ
CN108292222B (zh) 用于数据解压缩的硬件装置和方法
US7996581B2 (en) DMA engine
CN108028664B (zh) 使用具有多个搜索引擎的加速器的数据压缩
US9419647B2 (en) Partitioned data compression using accelerator
US20060121936A1 (en) Portable computing device adapted to update display information while in a low power mode
US10218497B2 (en) Hybrid AES-SMS4 hardware accelerator
US10158485B2 (en) Double affine mapped S-box hardware accelerator
CN107844321B (zh) 一种mcu处理系统
EP2889755A2 (en) Systems, apparatuses, and methods for expand and compress
CN102934074B (zh) 经压缩代码的加速执行
EP3716490A1 (en) Detection of adjacent two bit errors in a codeword
WO2017105710A1 (en) Compressed data decoder
CN102822794B (zh) 处理阶层式极长指令包的系统和方法
US10367524B2 (en) Semi-dynamic, low latency compression
US20210058076A1 (en) Hybrid fin flip flop circuit architecture
US8612690B2 (en) Method for filtering traffic to a physically-tagged data cache
Zhai et al. General Galois processor for transmitters in 5G/6G base stations
Huo et al. A High-Throughput Processor for Cryptographic Hash Functions.
CN117083596A (zh) 用于绝对差总和的指令和逻辑
CN104598497A (zh) 用于在电子设备中构成汉字的方法和装置
Jinwu et al. Driving Program Design of Wireless Sensor Node
CN103139110A (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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20160713

Termination date: 20210627