CN101176059A - 用于对具有可变指令大小的可变长度分组进行编码的方法及系统 - Google Patents

用于对具有可变指令大小的可变长度分组进行编码的方法及系统 Download PDF

Info

Publication number
CN101176059A
CN101176059A CNA2006800164984A CN200680016498A CN101176059A CN 101176059 A CN101176059 A CN 101176059A CN A2006800164984 A CNA2006800164984 A CN A2006800164984A CN 200680016498 A CN200680016498 A CN 200680016498A CN 101176059 A CN101176059 A CN 101176059A
Authority
CN
China
Prior art keywords
length
instructions
instruction
header
word
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.)
Granted
Application number
CNA2006800164984A
Other languages
English (en)
Other versions
CN101176059B (zh
Inventor
卢西恩·科德雷斯库
埃里希·普罗恩德克
穆罕默德·艾哈迈德
威廉·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.)
Qualcomm Inc
Original Assignee
Qualcomm 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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of CN101176059A publication Critical patent/CN101176059A/zh
Application granted granted Critical
Publication of CN101176059B publication Critical patent/CN101176059B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length 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, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3853Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution of compound instructions

Abstract

本文揭示用于在通信(例如,CDMA)系统中处理传输的技术。所述方法及系统对混合长度(例如,16位及32位)的指令及包括混合长度指令的指令分组进行编码及处理。这包括对第一长度的多个指令及第二长度的多个指令进行编码。所述方法及系统对具有至少一个指令长度位的报头进行编码。所述指令位在第一长度的指令与第二长度的指令之间进行区分,以供相关联DSP在混合流中进行处理。所述方法及系统根据指令长度位的内容在第一长度的指令与第二长度的指令之间进行区分。所述报头进一步包括用于在指令分组中的可变长度指令之间进行区分的位。

Description

用于对具有可变指令大小的可变长度分组进行编码的方法及系统
技术领域
所揭示标的物涉及数据通信。更具体而言,此揭示内容涉及用于对具有可变指令大小的可变长度分组进行编码的新颖及改进方法与系统。
背景技术
现代通信系统必须支持大量应用。一个这种通信系统是码分多址(CDMA)系统,其支持用户之间通过卫星或陆地链路的语音及数据通信。CDMA技术在多址通信系统中的使用揭示于名称为“使用卫星或陆地中继器的扩频多址通信系统(SPREADSPECTRUM MULTIPLE ACCESS COMMUNICATION SYSTEM USING SATELLITEOR TERRESTRIAL REPEATERS)”的第4,901,307号美国专利及名称为“用于在CDMA蜂窝式手机系统中产生波形的系统及方法(SYSTEM AND METHOD FORGENERATING WAVEFORMS IN A CDMA CELLULAR TELEHANDSET SYSTEM)”的第5,103,459号美国专利中,其二者均受让于本标的物的受让人。
CDMA系统通常经设计以符合一个或多个标准。一个这种第一代标准是“用于双模宽带扩频蜂窝式系统的TIA/EIMIS-95终端基站兼容性标准”,在下文中称为IS-95标准。所述IS-95 CDMA系统能够传输语音数据及分组数据。可更有效传输分组数据的新一代标准是由称为“第三代合作伙伴计划”(3GPP)的联盟提供的,且包含于一组可公开获得的文档中,包括文档Nos.3G TS 25.211、3G TS 25.212、3G TS 25.213及3G TS 25.214。3GPP标准在下文中称为W-CDMA标准。
数字信号处理器(DSP)频繁地用于遵照上述标准的无线手机中。具体而言,无线手机正在要求且将愈加要求其DSP处理用户定位、科学及多媒体应用、以及许多其他类型的应用,其中对多线程操作的单个方法会提供行得通的解决方案。此外,资源要求可能随均来自同一DSP的例如电视广播、流式消息自动收报机、电子邮件(包括带附加文档的消息)等应用以及例如摄影及PDA应用等常驻应用而广泛及动态改变。
在这种DSP中需要解决的一个重要问题是描绘DSP必须执行的指令的指令大小。一方面来说,高性能要求指令大小较大,例如32-位或更长。另一方面来说,需要小的代码大小,例如16-位长度。为实现小的代码大小,需要混合短的16-位指令与大的32-位指令。DSP机的VLIW(极长指令字)类还对指令群进行编码以确定可并行执行哪些指令。了解哪些指令可并行处理要求描述指令大小(也就是16-位或32-位指令)以及分组大小(也就是哪些指令被组群在一起以形成特定分组)二者。当存在混合指令大小时,所述机器必须快速描绘哪些指令是16-位指令及哪些是32-位指令。如果难以确定这一点,则在DSP操作中会出现大量其他问题。
确定指令大小的一个经典方法称为指令串行化。在这种方案中,需要以串行方式确定每一指令的大小。因此,为确定任一指令的大小,需要了解所有前述指令的大小。如果存在许多指令,则对以串行方式确定所有前述指令大小的需要可能受限。因此,需要一种允许以不同于串行方式的方法对指令进行语法分析以在16-位与32-位指令之间进行区分的方法及系统。
指令大小描绘存在的另一问题与分组描绘有关。分组描绘涉及并行使用大量指令。挑战在于描绘将哪些指令组合在一起。在一熟知的DSP构架中,例如,所有指令均为32-位长度。在这种构架中,不需要描绘大小差别。然而,需要描绘分组中的指令关联性。这准许确定将哪些分组组合在一起以作为指令分组来执行。然而,当前不存在为使用混合指令的DSP快速及有效描绘分组大小的已知方式。因此,进一步需要一种用于描绘其中执行具有变动长度的指令分组(其可能包括可变长度指令)的DSP中的分组大小的方法及系统。
进一步需要一种方法及系统,其不仅避免与以串行方式确定混合长度指令的大小相关联的问题,还用于其中能够支持许多不同的无线手机应用的DSP中的有效分组描绘。
发明内容
本文揭示用于对可变长度的指令及具有可变指令大小的分组进行编码的技术,所述技术改进数字信号处理器的操作及数字信号处理器指令的有效使用二者,以用于处理个人计算机、个人数字助理、无线手机及类似电子装置等的愈加稳健的软件应用、以及增加相关联的数字处理器速度及服务质量。
根据所揭示标的物的一个方面,提供一种用于对指令及混合长度(例如,16位及32位)的指令分组进行编码及处理的方法及系统。所述方法包括用于对第一长度(例如16位)的多个指令及第二长度(例如32位)的多个指令进行编码的步骤,且所述系统包括用于所述步骤的结构。所述方法及系统对具有至少一个指令长度位的报头进行编码。所述指令位在第一长度的指令与第二长度的指令之间进行区分。DSP处理第一长度的指令及第二长度的指令的混合流中的指令。所述方法及系统根据指令长度位的内容在第一长度的指令和具有第二长度的指令的每一者之间进行区分。
所揭示标的物进一步在所述报头中包括用于指出分组中的指令的预定位。因此,通过将这些功能位包含于报头中,所述方法及系统可在具有变动长度的指令之间以及这些指令在指令分组中的数量进行指定或区分。因此,本文提供一种不仅避免与以串行方式确定混合长度指令的大小相关联的问题,而且还用于在能够支持许多不同的无线手机应用的DSP中进行有效分组描绘的方法及系统。
所揭示标的物的这些及其他优势以及其他新颖特征将根据本文所提供说明而显而易见。此发明内容的目的并非所申请标的物的全面说明,而是提供对本标的物的某些功能的简短概述。在检查下述图式及详细说明的情况下,本文提供的其他系统、方法、特征及优势将对所属技术领域的技术人员显而易见。所有这种其他系统、方法、特征及优势均意欲包含于这一说明中,且在随附权利要求书的范畴内。
附图说明
结合附图阅读下文列举的详细说明,本标的物的特征、性质及优点将变得更加显而易见,其中所有图式中相同的参考字符均对应地标识,且其中:
图1是可以实施本实施例的通信系统的简化方块图;
图2图解说明用于实施本实施例教示的DSP构架;
图3提供用于单个DSP线程的编程模型实施例的构架方块图;
图4图解说明本实施例的指令大小分析图;
图5显示根据所揭示标的物包括分组报头的分组;及
图6进一步详细描绘所揭示标的物的一个实施例的分组报头编码。
具体实施方式
图1是可实施本实施例的通信系统10的简化方块图。在发射机单元12处,通常以区块为单位将数据从数据源14发送至发射(TX)数据处理器16,并由发射数据处理器16将所述数据格式化、编码及处理以产生一个或多个模拟信号。随后将模拟信号提供至发射机(TMTR)18,并由发射机18将基带信号调制、滤波、放大及上变频以产生经调制信号。随后经由天线20将所述经调制信号传输至一个或多个接收机单元。
在接收机单元22处,所传输信号被天线24接收并提供至接收机(RCVR)26。在接收机26内,将所接收信号放大、滤波、下变频、解调制及数字化以产生同相(I)及(Q)样本。所述样本随后由接收(RX)数据处理器28解码及处理以还原所传输数据。接收机单元22处的解码及处理是以与发射机单元12处执行的编码及处理兼容的方式执行的。随后将已还原的数据提供至数据汇30。
上述信号处理支持传输语音、视频、分组数据、消息传送及其他类型的单向通信。双向通信系统支持双向数据传输。然而,图1中为简便起见而未显示其他方向的信号处理。通信系统10可以是码分多址(CDMA)系统、时分多址(TDMA)通信系统(例如,GSM系统)、频分多址(FDMA)通信系统或其他支持通过陆地链路在用户之间的语音及数据通信的多址通信系统。在具体实施例中,通信系统10是符合W-CDMA标准的CDMA系统。
图2图解说明可充当图1所示发射数据处理器16及接收数据处理器28的DSP 40构架。应了解,DSP40仅代表大量可能的数字信号处理器实施例中的一个实施例,其可以有效使用本文提供的教示及概念。因此,在DSP 40中,线程T0至T5(参考数字42至52)包含来自不同线程的指令组。电路54代表指令访问机构,且用于取回线程T0至T5的指令。电路54的指令被排入指令队列56中。指令队列56中的指令准备被发布至处理器管线66中(见下文)。发布逻辑电路58可以从指令队列56中选择单个线程,例如线程T0。读取所选线程的寄存器文件60,并将所读取数据发送至执行数据路径62供用于槽0至槽3。在这一实例中,槽0至槽3用于本实施例中包含的分组组群组合。
来自执行数据路径62的输出进入寄存器文件写入电路64,还经配置以适应个别线程T0至T5,以返回DSP 40的操作结果。因此,自电路54发出且在到达寄存器文件写入电路64之前根据各线程来分割的数据路径形成处理管线66。
本实施例可包含使用具有多达6个线程T0至T5的单个微处理器的异类元素处理器(HEP)系统。处理器管线66具有6级,以匹配从电路54将数据项目取回寄存器60及64所需的最小数量的处理器循环。DSP40在处理器管线66中并发执行不同线程T0至T5的指令。也就是说,DSP 40提供6个独立的程序计数器、用于区别处理器管线66内线程T0至T5的指令的内部标记机构、及触发线程交换的机构。线程交换开销从零变动到仅几个循环。
因此,DSP 40提供一种设计用于在大量信号、图像及视频处理应用上具有高性能及低功率的通用数字信号处理器。图3提供DSP 40构架的简要概述,其中包括所揭示标的物的一个显现的相关联指令组构架的关键方面。DSP 40构架的实施方案支持交错多线程(EVIT)。在这一执行模型中,硬件通过交错来自管线中不同线程的指令来支持多个硬件线程T0至T5的并发执行。这一特性允许DSP 40包括主动的时钟频率,同时仍维持高的核心及存储器使用率。EVIT会在无需使用昂贵的补偿机构(例如,无序执行、广泛转发网络等)的前提下提供高通量。此外,DSP 40可包括IMT的变化形式,例如M.Ahmed等人提出申请且名称为“可变交错的多线程处理器方法及系统(Variable Interleaved Multithreaded Processor Method and System)”及“用于在多线程处理器中进行可变线程分配及交换的方法及系统(Method and System for Variable Thread Allocation and Switching in a Multithreaded Processor)”的公开让与的美国专利申请案中揭示的那些变化形式及新颖方法。
本文所揭示标的物涉及单线程的执行模型。IMT的软件模型可被视为共享型存储器多处理器。单线程看见具有所有可用的寄存器及指令的完整的单处理器DSP 40。通过相干的共享存储器设备,这一线程能够与其他线程通信及同步。这些其他线程是运行于同一处理器上还是另一处理器上对用户等级的软件是大致透明的。
因此,图3提供一种用于单线程的编程模型实施例的构架方块图。图3显示用于DSP 40的指令组构架(ISA)70的方块图实施例,其中DSP 40包括统一字节可寻址存储器72。存储器72将16-位及32-位混合指令提供给定序器74。存在两个寄存器文件,包括一般寄存器76及控制寄存器78。定序器74将双向超标量指令及四向VLIW指令的混合物提供至向量偏移单元80、向量MAC单元82、加载单元84及加载/存储单元86。因此,DSP 40构架起到统一存储器72及单个统一寄存器文件的作用。混合的16-位及32-位指令可并行发出,在一实施例中可一次多达四个。此外,ISA 70支持每循环将两个64-位双字从存储器移动至寄存器。
DSP 40的存储器72、一般寄存器76及控制寄存器78支持单个的32-位地址空间,所述地址空间保留以小尾模式操作的指令及数据二者。一般寄存器76保留32个32-位寄存器,所述寄存器可作为单个寄存器或作为线列64-位对来访问。一般寄存器76保留所有指示器、标量、向量、及累加器数据,并为作为编译器目标的服务提供灵活性。控制寄存器78保留例如程序计数器、状态寄存器等专用寄存器。
ISA 70起到混合执行模型的作用,其混合超标量及VLIW执行的优势。超标量发布的优势在于无需使用软件信息查找独立指令。提供多发布执行不会引起代码大小增加或编码低效。另外,超标量发布可在分支边界上找到并行指令,这对编译器而言可能是困难的。然而,超标量发布在硬件方面的要求超出双发布。
VLIW执行的优势是软件可标识远多于两个并行执行的指令,尤其是在DSP代码典型具有的软件管线回路中。VLIW是提供广发布能力的廉价方式。因此,ISA 70通过创建混合模型来组合两个执行模型的力量。ISA 70的执行模型为三个或更多个指令的分组传送VLIW分组信息。对于一个及两个指令的并行,ISA70负责经由双超标量发布的多指令执行。以此方式,所述构架及相关联的微构架可传送具有最小代码大小惩戒的广发布并行。还可以开发控制代码中的分支边界上的并行。
如下文进一步详细阐述,使用16-位指令或32-位指令对指令进行编码。所述两种指令大小可自由混合于程序中。这些混合大小的指令可成组封装以供并行执行之用。所述分组可能具有可变大小。所述16-位指令组经选择以精确匹配编译器产生密集控制代码的需要。
此外,ISA 70组合对编译器提供完美支持的RISC类标量指令组和对信号处理应用提供一组丰富操作的DSP导向指令组。在DSP 40内,ISA 70代码是向上二进制兼容的。这意味着为低端实施方案编写的二进制码将不受影响地运行于高端实施方案上。使用ISA 70的DSP 40具体支持下列应用程序类:(1)通信信号处理(例如数据机);(2)视频处理(例如H.264格式);(3)图像处理;(4)音频处理;(5)3-D图形前端软件;及(6)支持控制代码、协议堆栈、RTOS等。
根据所揭示标的物,指令编码包括用于指令及成群指令分组的二进制编码方案。图4图解说明针对本实施例的指令大小分析程序90。具体而言,16-位半字92包括最有效的位94,其充当用于指示半字92长度的指令长度位。因此,根据值“01”、“10”“11”,半字92被标识为16位长度。还应注意,如果半字92在分组中(下文阐述),且指令长度位94具有“00”值,则在这一实施方案中长度可以是16位的。或者,如果所述16-位半字不在分组中,且指令长度位具有值“00”,则所述指令长度是32位的。这显示于16-位半字96中,其是32-位指令98的一部分。具体而言,如果指令长度位100后的32-位指令98均具有值“00”,则所有指令位102具有值“01”、“10”及“11”。此外,在所例示的实施例中,32-位指令104包括具有值“00”的指令位106及具有值“00”的指令位108。此32-位指令104的最有效位可包括(例如)不同于针对长度指定的使用。
为实现最佳代码密度,ISA 70支持混合16-位指令92和32-位指令98。这些指令可自由混合在一起,且可以视需要地一起组群为分组供并行执行。16-位指令92可访问一组受限制的寄存器,且仅最频繁的操作码可以16-位格式使用。所述16-位的指令92通常可以两个操作码源破坏性格式使用。选择用于16-位格式的指令是基于编译好的代码在统计上最频繁的指令。
因此,每一个16-位半字92及96的两个最有效位(MSB)会指示指令的结束。多数16-位的指令92是32-位指令98的子集版本。例如,在一个实施例中,16-位ADD直接指令具有较短的直接指令,及比等价32-位ADD指令更有限的寄存器范围。某一类16-位指令92可仅在分组内使用。这些指令总是等价32-位指令98的子集版本。32-位指令98可用于分组的内部或外部。这些32-位指令98被选择为在分组内找到的常见指令。32-位指令98可访问所有寄存器资源及所有操作码,且可以三个操作码的非源破坏性格式提供。
在本实施例中,指令92及98可一起组群以形成将要一起及并行执行的独立指令的分组110(图5)。指令92及98可一起组群的数量及类型是可能相依于(例如)特定实施方案的构架性选项。例如,DSP 40的一个版本支持将多达四个指令组群为一分组。
图5显示分组110包括与四个并行指令114相关联的分组报头112。并行指令114包括16位的指令0 116、16位的指令1 118、32位的指令2 120和16位的指令3 122。在本实施例中,并行指令分组110的编码包括将指令组群为独立运作的分组110。ISA70保证一组群中的所有指令可并行执行。分组110是通过预先考虑具有分组报头112(其包括关于分组110的信息)的各独立指令而形成的。分组报头112被编码为16-位指令。在本实例中,在构架上组群的分组110对四个指令进行编码。在其中存在少于四个组群指令的情形中,可在未使用的槽中使用NOP指令。
关于将何种类型的指令组群在一起及所述指令应以哪种次序出现于分组110中,可能存在各种规则及约束。一般而言,分组110应涉及资源约束、依赖性约束及排序约束。此外,分组110可被界定为具有并行执行语义。这意味着分组110的执行行为可能如下:首先,分组110中的所有指令可并行读取其源寄存器;随后,分组中的所有指令可并行执行;最后,分组中的所有指令可并行写入其目的寄存器。
与本揭示内容相一致,可将分组及单个指令自由混合于代码中。在本实施例中,分组110应被视为原子单元,本质上是大的“指令”。类似于个别指令,分组110可执行至完成或根本未完成,也就是说,分组较佳地决不部分地完成执行。如果分组导致(例如)存储器异常,则本实施例在所述分组之前建立异常点。分组110可具有单个PC地址,所述PC地址是分组开始的地址。较佳地,分支至分组110的中间是无效的。在构架上,分组110或单个指令92及98可执行以完成,包括在下一分组或指令开始之前更新所有寄存器及存储器。
图6进一步详细描绘针对所揭示标的物的一个实施例的分组报头112编码。具体而言,在分组报头112的16个位中,不太有效的位124、126、128及130分别且参照图5而与指令0 116、指令111 8、指令2 120及指令3 122的大小相关。分组报头112进一步包括外回路位132及内回路位134、以及分组报头操作码136。
如文中可见,分组报头112提供包含关于分组(例如分组110)的信息的唯一16-位指令。在分组报头112中,不太有效的四个位指示所述四个指令的每一者的大小(或16-位或32-位)。内回路位132及外回路位132可由DSP 40的硬件回路机构用于将分组110分别标记为内回路或外回路中的最后一个。在图6中标记为“-”的剩余位138及140可在本实施例中被保留以供将来扩展,且较佳被设定为零。
在本实施例中,分组报头112在构架上将分组内的最大指令数量限制为4。然而,各种ISA 70版本可指定支持更广阔发布的32-位分组报头。
当指令包含于分组110中时,半字MSB中的“00”继续型态是冗余信息。此“00”标记符在16-位和32-位指令之间进行区分,此是分组报头中的相同信息。通过在分组内重复利用“00”型态来开发这一事实。对于分组化指令,所述“00”型态用于对仅在分组内可用的16-位指令进行编码。
本实施例克服串行分析的大小描绘问题,因为分组报头112的位指定指令大小。本实施例通过使用报头位94及100指定个别指令大小来克服先前方法的分组描绘问题,其中所述个别指令大小的位还准许确定总分组大小。本实施例还提供其他灵活性以便可将更多信息插入每一指令内。
概括来说,所揭示标的物提供一种用于对混合长度(例如,16位及32位)指令进行编码及处理的方法及系统。所述方法包括对多个第一长度(例如16位)指令92及多个第二长度(例如32位)的指令98进行编码的步骤,且所述系统包括用于所述步骤的指令及相关结构。所述方法及系统对具有至少一个指令长度位的报头94及100进行编码。所述指令位在第一长度的指令92和第二长度的指令98之间进行区分。DSP40处理由第一长度的指令92和第二长度的指令98构成的混合流中的指令。所述方法及系统根据指令长度位94及100的内容在第一长度的指令92与第二长度的指令98的每一者之间进行区分。
所揭示标的物进一步在报头中包括用于指定分组中的指令的指定位。因此,通过在报头中包含这些位,所述方法及系统可在变动长度的指令之间以及这些指令在指令分组中的数量进行指定或区分。因此,本文提供一种不仅避免与以串行方式确定混合长度指令大小相关联的问题,而且还提供用于在能够支持许多不同的无线手持机应用的DSP中进行有效分组描绘的方法及系统。
本文所述处理特征及功能可以各种方式实施。例如,不仅DSP 40可实施上述操作,而且本实施例可实施于应用专用集成电路(ASIC)、微控制器、微处理器或其他设计用于实施本文所述功能的电子电路中。因此,上文对较佳实施例的说明旨在使得所属技术领域的技术人员均能够制作或使用所主张的标的物。所属技术领域的技术人员将易于了解对这些实施例的各种修改,且本文界定的一般原理可在不使用创新能力的情况下而适用于其他实施例。因此,本文并不希望将所主张标的物限定为本文显示的实施例,而是想要赋予其与本文所揭示原理及新颖特征相一致的最宽广范围。

Claims (29)

1.一种用于对混合长度的指令进行编码及处理的方法,其包括下列步骤:
对第一长度的多个指令进行编码;
对第二长度的多个指令进行编码;
对包括至少一个指令长度位的报头进行编码,所述至少一个指令位用于在所述第一长度的多个指令与所述第二长度的多个指令之间进行区分;
使至少一个所述报头与所述第一长度的多个指令中的每一指令相关联且使至少一个所述报头与所述第二长度的多个指令中的每一指令相关联,以形成第二经编码指令;
在混合流中处理所述第一长度的多个指令及所述第二长度的多个指令;及
根据所述对应相关联报头的所述至少一个指令长度位,在所述第一长度的多个指令与所述第二长度的多个指令的每一者之间进行区分。
2.如权利要求1所述的方法,其进一步包括下列步骤:使分组中所述第一长度的多个指令的预定子集与所述第二长度的多个指令的预定子集相关联,及进一步对分组报头进行编码以用于在所述分组中标识所述第一长度的多个指令的所述预定子集及所述第二长度的多个指令的所述预定子集的位置及长度。
3.如权利要求2所述的方法,其进一步包括下列步骤:对所述分组报头进行编码以包括分组报头操作码,所述分组报头操作码用于在所述分组中指定与所述第一长度的多个指令的所述预定子集及所述第二长度的多个指令的所述预定子集相关联的至少一个操作特性。
4.如权利要求2所述的方法,其进一步包括对所述分组报头进行编码以包括用于阐述所述指令分组的16位数据的步骤。
5.如权利要求1所述的方法,其进一步包括下列步骤:
对第一长度的多个指令进行编码,所述第一长度包括16-位半字;及
对第二长度的多个指令进行编码,所述第二长度包括32-位字,所述32-位字包括两个16-位半字。
6.如权利要求1所述的方法,其进一步包括对所述报头进行编码以包括第一位及第二位的步骤,所述第一位及所述第二位的每一者均具有值“0”或“1”。
7.如权利要求6所述的方法,其进一步包括对所述报头进行编码以包括所述第一位及第二位值“01”、“10”或“11”以用于将指令指定为所述第一长度的所述多个指令中的一者的步骤。
8.如权利要求1所述的方法,其进一步包括下列步骤:
对第二长度的多个指令进行编码,所述第二长度包括32-位字,所述32-位字包括第一16-位半字及第二16-位半字;及
使第一报头与所述第一16-位半字相关联,及使第二报头与所述第二16-位半字相关联,所述第一报头用于将所述第一16-位半字标识为所述32-位字的第一部分,所述第二报头用于将所述第二16-位半字标识为所述32-位字的第二部分。
9.如权利要求8所述的方法,其进一步包括将所述第一报头设定为具有值“00”及将所述第二报头设定为具有值“10”、“10”或“11”的步骤。
10.一种系统,其用于与数字信号处理器相关联地操作以用于对混合长度的指令进行编码及处理,所述系统包括:
存储器,其用于对第一长度的多个指令进行编码;
所述存储器电路进一步用于对第二长度的多个指令进行编码;
与所述存储器相关联的编码电路及指令,其用于对包括至少一个指令长度位的报头进行编码,所述至少一个指令位用于在所述第一长度的多个指令与所述第二长度的多个指令之间进行区分;
所述编码电路及指令进一步用于使至少一个所述报头与所述第一长度的多个指令中的每一指令相关联及使至少一个所述报头与所述第二长度的多个指令中的每一指令相关联,以形成第二经编码指令;
寄存器电路及指令,其用于在混合流中处理所述第一长度的多个指令及所述第二长度的多个指令;及
所述寄存器电路及指令进一步用于根据所述对应相关联报头的所述至少一个指令长度位在所述第一长度的多个指令与所述第二长度的多个指令中的每一者之间进行区分。
11.如权利要求10所述的系统,其中所述存储器进一步包括电路及指令,所述电路及指令用于使分组中所述第一长度的多个指令的预定子集与所述第二长度的多个指令的预定子集相关联,且进一步用于随所述分组对分组报头进行编码以用于在所述分组中标识所述第一长度的多个指令的所述预定子集及所述第二长度的多个指令的所述预定子集的位置及长度。
12.如权利要求10所述的系统,其中所述存储器进一步包括指令及电路,所述指令及电路用于对所述分组报头进行编码以包括分组报头操作码,所述分组报头操作码用于在所述分组中指定与所述第一长度的多个指令的所述预定子集及所述第二长度的多个指令的所述预定子集相关联的至少一个操作特性。
13.如权利要求10所述的系统,其中所述存储器进一步包括用于对所述分组报头进行编码以包括用于阐述所述指令分组的16位数据的电路及指令。
14.如权利要求10所述的系统,其中所述存储器进一步包括:用于对第一长度的多个指令进行编码的电路及指令,所述第一长度包括16-位半字;及用于对第二长度的多个指令进行编码的电路及指令,所述第二长度包括32-位字,所述32-位字包括两个16-位半字。
15.如权利要求10所述的系统,其中所述存储器进一步包括用于对所述报头进行编码以包括第一位及第二位的电路及指令,所述第一位及所述第二位的每一者均具有值“0”或“1”。
16.如权利要求15所述的系统,其中所述存储器进一步包括用于对所述报头进行编码以包括所述第一位及第二位值“01”、“10”或“11”以用于将指令指定为所述第一长度的所述多个指令中的一者的电路及指令。
17.如权利要求10所述的系统,其中所述存储器进一步包括:用于对第二长度的多个指令进行编码的电路及指令,所述第二长度包括32-位字,所述32-位字包括第一16-位半字及第二16-位半字;及用于使第一报头与所述第一16-位半字相关联及使第二报头与所述第二16-位半字相关联的电路及指令,所述第一报头用于将所述第一16-位半字标识为所述32-位字的第一部分,所述第二报头用于将所述第二16-位半字标识为所述32-位字的第二部分。
18.如权利要求17所述的系统,其中所述存储器进一步包括用于将所述第一报头设定为具有值“00”及将所述第二报头设定为具有值“10”、“10”或“11”的电路及指令。
19.一种数字信号处理器,其用于与个人电子装置相关联地操作以用于对混合长度的指令进行编码及处理,所述数字信号处理器包括:
用于对第一长度的多个指令进行编码的装置;
用于对第二长度的多个指令进行编码的装置;
用于对包括至少一个指令长度位的报头进行编码的装置,所述至少一个指令位用于在所述第一长度的多个指令与所述第二长度的多个指令之间进行区分;
用于使至少一个所述报头与所述第一长度的多个指令中的每一指令相关联及使至少一个所述报头与所述第二长度的多个指令中的每一指令相关联以形成第二经编码指令的装置;
用于在混合流中处理所述第一长度的多个指令及所述第二长度的多个指令的装置;及
用于根据所述对应相关联报头的所述至少一个指令长度位在所述第一长度的多个指令与所述第二长度的多个指令的每一者之间进行区分的装置。
20.如权利要求19所述的系统的数字信号处理器,其进一步包括用于使分组中所述第一长度的多个指令的预定子集与所述第二长度的多个指令的预定子集相关联的装置,且进一步包括用于随所述分组对分组报头进行编码以用于在分组中标识所述第一长度的多个指令的所述预定子集及所述第二长度的多个指令的所述预定子集的位置及长度的装置。
21.如权利要求19所述的系统的数字信号处理器,其进一步包括用于对所述分组报头进行编码以包括分组报头操作码的装置,所述分组报头操作码用于在所述分组中指定与所述第一长度的多个指令的所述预定子集及所述第二长度的多个指令的所述预定子集相关联的至少一个操作特性。
22.如权利要求19所述的系统的数字信号处理器,其进一步包括用于对所述分组报头进行编码以包括用于阐述所述指令分组的16位数据的装置。
23.如权利要求19所述的系统的数字信号处理器,其进一步包括用于对第一长度的多个指令进行编码的装置,所述第一长度包括16-位半字;及用于对第二长度的多个指令进行编码的电路及指令,所述第二长度包括32-位字,所述32-位字包括两个16-位半字。
24.如权利要求19所述的系统的数字信号处理器,其进一步包括用于对所述报头进行编码以包括第一位及第二位的装置,所述第一位及所述第二位的每一者均具有值“0”或“1”。
25.如权利要求24所述的系统的数字信号处理器,其进一步包括用于对所述报头进行编码以包括所述第一位及第二位值“01”、“10”或“11”以用于将指令指定为所述第一长度的所述多个指令中的一者的装置。
26.如权利要求19所述的系统的数字信号处理器,其进一步包括:用于对第二长度的多个指令进行编码的装置,所述第二长度包括32-位字,所述32-位字包括第一16-位半字及第二16-位半字;及用于使第一报头与所述第一16-位半字相关联及使第二报头与所述第二16-位半字相关联的电路及指令,所述第一报头用于将所述第一16-位半字标识为所述32-位字的第一部分,所述第二报头用于将所述第二16-位半字标识为所述32-位字的第二部分。
27.如权利要求26所述的系统的数字信号处理器,其进一步包括用于将所述第一报头设定为具有值“00”及将所述第二报头设定为具有值“10”、“10”或“11”的装置。
28.一种计算机可用媒体,其中包含有计算机可读程序代码装置以用于在与无线手持机相关联地操作的数字信号处理器上处理指令,所述计算机可用媒体包括:
用于对第一长度的多个指令进行编码的计算机可读程序代码装置;
用于对第二长度的多个指令进行编码的计算机可读程序代码装置;
用于对包括至少一个指令长度位的报头进行编码的计算机可读程序代码装置,所述至少一个指令位用于在所述第一长度的多个指令与所述第二长度的多个指令之间进行区分;
用于使至少一个所述报头与所述第一长度的多个指令中的每一指令相关联及使至少一个所述报头与所述第二长度的多个指令中的每一指令相关联以形成第二经编码指令的计算机可读程序代码装置;
用于在混合流中处理所述第一长度的多个指令及所述第二长度的多个指令的计算机可读程序代码装置;及
用于根据所述对应相关联报头的所述至少一个指令长度位在所述第一长度的多个指令与所述第二长度的多个指令的每一者之间进行区分的计算机可读程序代码装置。
29.如权利要求28所述的计算机可用媒体,其进一步包括:
用于在分组中使所述第一长度的多个指令的预定子集与所述第二长度的多个指令的预定子集相关联的计算机可读程序代码装置,及
用于对分组报头进行编码以用于标识所述第一长度的多个指令的所述预定子集及所述第二长度的多个指令的所述预定子集在所述分组中的位置及对应长度的计算机可读程序代码装置。
CN2006800164984A 2005-03-23 2006-03-23 用于对具有可变指令大小的可变长度分组进行编码的方法及系统 Active CN101176059B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/088,607 2005-03-23
US11/088,607 US7526633B2 (en) 2005-03-23 2005-03-23 Method and system for encoding variable length packets with variable instruction sizes
PCT/US2006/011171 WO2006102664A2 (en) 2005-03-23 2006-03-23 Method and system for encoding variable length packets with variable instruction sizes

Publications (2)

Publication Number Publication Date
CN101176059A true CN101176059A (zh) 2008-05-07
CN101176059B CN101176059B (zh) 2011-12-21

Family

ID=36717017

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2006800164984A Active CN101176059B (zh) 2005-03-23 2006-03-23 用于对具有可变指令大小的可变长度分组进行编码的方法及系统

Country Status (4)

Country Link
US (1) US7526633B2 (zh)
CN (1) CN101176059B (zh)
MX (1) MX2007011708A (zh)
WO (1) WO2006102664A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102141903A (zh) * 2011-03-22 2011-08-03 杭州中天微系统有限公司 用于16/32位混合指令的对称编码装置与译码装置
CN102822794A (zh) * 2010-03-03 2012-12-12 高通股份有限公司 处理阶层式极长指令包的系统和方法

Families Citing this family (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401205B1 (en) * 1999-08-13 2008-07-15 Mips Technologies, Inc. High performance RISC instruction set digital signal processor having circular buffer and looping controls
EP1849095B1 (en) * 2005-02-07 2013-01-02 Richter, Thomas Low latency massive parallel data processing device
US7590824B2 (en) * 2005-03-29 2009-09-15 Qualcomm Incorporated Mixed superscalar and VLIW instruction issuing and processing method and system
US7581082B2 (en) * 2005-05-13 2009-08-25 Texas Instruments Incorporated Software source transfer selects instruction word sizes
US20070083736A1 (en) * 2005-10-06 2007-04-12 Aravindh Baktha Instruction packer for digital signal processor
US7500023B2 (en) 2006-10-10 2009-03-03 International Business Machines Corporation Facilitating input/output processing by using transport control words to reduce input/output communications
US7502873B2 (en) 2006-10-10 2009-03-10 International Business Machines Corporation Facilitating access to status and measurement data associated with input/output processing
US7941570B2 (en) 2008-02-14 2011-05-10 International Business Machines Corporation Bi-directional data transfer within a single I/O operation
US8478915B2 (en) 2008-02-14 2013-07-02 International Business Machines Corporation Determining extended capability of a channel path
US8108570B2 (en) 2008-02-14 2012-01-31 International Business Machines Corporation Determining the state of an I/O operation
US9052837B2 (en) 2008-02-14 2015-06-09 International Business Machines Corporation Processing communication data in a ships passing condition
US7840718B2 (en) 2008-02-14 2010-11-23 International Business Machines Corporation Processing of data to suspend operations in an input/output processing log-out system
US7890668B2 (en) 2008-02-14 2011-02-15 International Business Machines Corporation Providing indirect data addressing in an input/output processing system where the indirect data address list is non-contiguous
US7917813B2 (en) 2008-02-14 2011-03-29 International Business Machines Corporation Exception condition determination at a control unit in an I/O processing system
US8082481B2 (en) 2008-02-14 2011-12-20 International Business Machines Corporation Multiple CRC insertion in an output data stream
US7937507B2 (en) 2008-02-14 2011-05-03 International Business Machines Corporation Extended measurement word determination at a channel subsystem of an I/O processing system
US7904605B2 (en) 2008-02-14 2011-03-08 International Business Machines Corporation Computer command and response for determining the state of an I/O operation
US7908403B2 (en) 2008-02-14 2011-03-15 International Business Machines Corporation Reserved device access contention reduction
US8117347B2 (en) 2008-02-14 2012-02-14 International Business Machines Corporation Providing indirect data addressing for a control block at a channel subsystem of an I/O processing system
US7899944B2 (en) 2008-02-14 2011-03-01 International Business Machines Corporation Open exchange limiting in an I/O processing system
US8176222B2 (en) 2008-02-14 2012-05-08 International Business Machines Corporation Early termination of an I/O operation in an I/O processing system
US8001298B2 (en) 2008-02-14 2011-08-16 International Business Machines Corporation Providing extended measurement data in an I/O processing system
US8095847B2 (en) 2008-02-14 2012-01-10 International Business Machines Corporation Exception condition handling at a channel subsystem in an I/O processing system
US8196149B2 (en) 2008-02-14 2012-06-05 International Business Machines Corporation Processing of data to determine compatability in an input/output processing system
US8166206B2 (en) 2008-02-14 2012-04-24 International Business Machines Corporation Cancel instruction and command for determining the state of an I/O operation
US8214562B2 (en) 2008-02-14 2012-07-03 International Business Machines Corporation Processing of data to perform system changes in an input/output processing system
US8312189B2 (en) 2008-02-14 2012-11-13 International Business Machines Corporation Processing of data to monitor input/output operations
US7840717B2 (en) 2008-02-14 2010-11-23 International Business Machines Corporation Processing a variable length device command word at a control unit in an I/O processing system
US20090327674A1 (en) * 2008-06-27 2009-12-31 Qualcomm Incorporated Loop Control System and Method
US8055807B2 (en) 2008-07-31 2011-11-08 International Business Machines Corporation Transport control channel program chain linking including determining sequence order
US7904606B2 (en) 2008-07-31 2011-03-08 International Business Machines Corporation Transport control channel program chain linked branching
US7937504B2 (en) 2008-07-31 2011-05-03 International Business Machines Corporation Transport control channel program message pairing
JP2010257199A (ja) * 2009-04-24 2010-11-11 Renesas Electronics Corp プロセッサ及びプロセッサにおける命令発行の制御方法
US8332542B2 (en) 2009-11-12 2012-12-11 International Business Machines Corporation Communication with input/output system devices
US8583988B2 (en) 2011-06-01 2013-11-12 International Business Machines Corporation Fibre channel input/output data routing system and method
US9021155B2 (en) 2011-06-01 2015-04-28 International Business Machines Corporation Fibre channel input/output data routing including discarding of data transfer requests in response to error detection
US8738811B2 (en) 2011-06-01 2014-05-27 International Business Machines Corporation Fibre channel input/output data routing system and method
US8364853B2 (en) 2011-06-01 2013-01-29 International Business Machines Corporation Fibre channel input/output data routing system and method
US8677027B2 (en) 2011-06-01 2014-03-18 International Business Machines Corporation Fibre channel input/output data routing system and method
US8364854B2 (en) 2011-06-01 2013-01-29 International Business Machines Corporation Fibre channel input/output data routing system and method
US8346978B1 (en) 2011-06-30 2013-01-01 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8312176B1 (en) 2011-06-30 2012-11-13 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8549185B2 (en) 2011-06-30 2013-10-01 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8473641B2 (en) 2011-06-30 2013-06-25 International Business Machines Corporation Facilitating transport mode input/output operations between a channel subsystem and input/output devices
US8918542B2 (en) 2013-03-15 2014-12-23 International Business Machines Corporation Facilitating transport mode data transfer between a channel subsystem and input/output devices
US8990439B2 (en) 2013-05-29 2015-03-24 International Business Machines Corporation Transport mode data transfer between a channel subsystem and input/output devices
US10409606B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Verifying branch targets
US10191747B2 (en) 2015-06-26 2019-01-29 Microsoft Technology Licensing, Llc Locking operand values for groups of instructions executed atomically
US10409599B2 (en) 2015-06-26 2019-09-10 Microsoft Technology Licensing, Llc Decoding information about a group of instructions including a size of the group of instructions
US10346168B2 (en) 2015-06-26 2019-07-09 Microsoft Technology Licensing, Llc Decoupled processor instruction window and operand buffer
US9946548B2 (en) 2015-06-26 2018-04-17 Microsoft Technology Licensing, Llc Age-based management of instruction blocks in a processor instruction window
US9952867B2 (en) 2015-06-26 2018-04-24 Microsoft Technology Licensing, Llc Mapping instruction blocks based on block size
US10175988B2 (en) 2015-06-26 2019-01-08 Microsoft Technology Licensing, Llc Explicit instruction scheduler state information for a processor
US10169044B2 (en) * 2015-06-26 2019-01-01 Microsoft Technology Licensing, Llc Processing an encoding format field to interpret header information regarding a group of instructions
WO2020187421A1 (en) * 2019-03-21 2020-09-24 Unify Patente Gmbh & Co. Kg Processor device and a method for parallel processing instructions in a processor device

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2037708C (en) * 1990-05-04 1998-01-20 Richard J. Eickemeyer General purpose compound apparatus for instruction-level parallel processors
US5214763A (en) * 1990-05-10 1993-05-25 International Business Machines Corporation Digital computer system capable of processing two or more instructions in parallel and having a coche and instruction compounding mechanism
US5634025A (en) * 1993-12-09 1997-05-27 International Business Machines Corporation Method and system for efficiently fetching variable-width instructions in a data processing system having multiple prefetch units
US5669001A (en) * 1995-03-23 1997-09-16 International Business Machines Corporation Object code compatible representation of very long instruction word programs
JP2931890B2 (ja) * 1995-07-12 1999-08-09 三菱電機株式会社 データ処理装置
US5774737A (en) * 1995-10-13 1998-06-30 Matsushita Electric Industrial Co., Ltd. Variable word length very long instruction word instruction processor with word length register or instruction number register
JP3658101B2 (ja) 1996-09-13 2005-06-08 株式会社ルネサステクノロジ データ処理装置
US5819058A (en) * 1997-02-28 1998-10-06 Vm Labs, Inc. Instruction compression and decompression system and method for a processor
US6101592A (en) * 1998-12-18 2000-08-08 Billions Of Operations Per Second, Inc. Methods and apparatus for scalable instruction set architecture with dynamic compact instructions
US5881260A (en) * 1998-02-09 1999-03-09 Hewlett-Packard Company Method and apparatus for sequencing and decoding variable length instructions with an instruction boundary marker within each instruction
US6418527B1 (en) * 1998-10-13 2002-07-09 Motorola, Inc. Data processor instruction system for grouping instructions with or without a common prefix and data processing system that uses two or more instruction grouping methods
US6366998B1 (en) * 1998-10-14 2002-04-02 Conexant Systems, Inc. Reconfigurable functional units for implementing a hybrid VLIW-SIMD programming model
US6260134B1 (en) * 1998-11-02 2001-07-10 Advanced Micro Devices, Inc. Fixed shift amount variable length instruction stream pre-decoding for start byte determination based on prefix indicating length vector presuming potential start byte
US6415376B1 (en) * 2000-06-16 2002-07-02 Conexant Sytems, Inc. Apparatus and method for issue grouping of instructions in a VLIW processor
KR100718754B1 (ko) * 2002-01-31 2007-05-15 에이알씨 인터내셔널 길이가 다른 명령어집합 구조를 갖는 설정가능형데이터프로세서

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102822794A (zh) * 2010-03-03 2012-12-12 高通股份有限公司 处理阶层式极长指令包的系统和方法
CN102822794B (zh) * 2010-03-03 2016-08-03 高通股份有限公司 处理阶层式极长指令包的系统和方法
CN102141903A (zh) * 2011-03-22 2011-08-03 杭州中天微系统有限公司 用于16/32位混合指令的对称编码装置与译码装置
CN102141903B (zh) * 2011-03-22 2014-02-12 杭州中天微系统有限公司 用于16/32位混合指令的对称编码装置与译码装置

Also Published As

Publication number Publication date
MX2007011708A (es) 2007-11-20
CN101176059B (zh) 2011-12-21
WO2006102664A3 (en) 2007-03-29
US7526633B2 (en) 2009-04-28
US20060218379A1 (en) 2006-09-28
WO2006102664A2 (en) 2006-09-28

Similar Documents

Publication Publication Date Title
CN101176059B (zh) 用于对具有可变指令大小的可变长度分组进行编码的方法及系统
Neira‐Ayuso et al. Communicating between the kernel and user‐space in Linux using Netlink sockets
US7039915B2 (en) Method and apparatus for software-based allocation and scheduling of hardware resources in an electronic device
EP0935855B1 (en) Multiple network protocol encoder/decoder and data processor
US7917907B2 (en) Method and system for variable thread allocation and switching in a multithreaded processor
US7590824B2 (en) Mixed superscalar and VLIW instruction issuing and processing method and system
CN101807205B (zh) 用于处理xml数据的处理模块、设备和方法
CN101720460A (zh) 紧凑指令组编码
US7536691B2 (en) Method and apparatus for software-based allocation and scheduling of hardware resources in a wireless communication device
US8379032B2 (en) System and method of mapping shader variables into physical registers
CN109992302A (zh) 远程原子操作的空间和时间上的归并
CN101501634A (zh) 使用标量/向量指令处理数据的系统和方法
GB2494245A (en) Multi-stream communication
CN101331449A (zh) 用于可缩放可编程的循环式缓冲器的指针计算方法及系统
CN101171570A (zh) 多线程处理器和线程切换方法
US20130097616A1 (en) Corba embedded inter-orb protocol (eiop)
US20130024652A1 (en) Scalable Processing Unit
CN101689159B (zh) 令牌协议
US7124222B2 (en) Control system and method for a communications interface
CN107133324A (zh) 基于国产cpu和操作系统的流数据的处理引擎及方法
CN101656708A (zh) 数据发送和接收方法及装置、数据传输方法和系统
CN113132236B (zh) 基于可编程数据平面的服务选择方法、装置及交换机
CN103856396B (zh) 插件间的报文传递方法及装置、代理插件
CN110489361A (zh) 兼容sram总线的i3c接口电路
US20140344549A1 (en) Digital signal processor and baseband communication device

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1114202

Country of ref document: HK

C14 Grant of patent or utility model
GR01 Patent grant
REG Reference to a national code

Ref country code: HK

Ref legal event code: WD

Ref document number: 1114202

Country of ref document: HK