CN109564545B - 用于压缩地址的方法和设备 - Google Patents

用于压缩地址的方法和设备 Download PDF

Info

Publication number
CN109564545B
CN109564545B CN201780048506.1A CN201780048506A CN109564545B CN 109564545 B CN109564545 B CN 109564545B CN 201780048506 A CN201780048506 A CN 201780048506A CN 109564545 B CN109564545 B CN 109564545B
Authority
CN
China
Prior art keywords
memory address
cache
stored
tag
storing
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
CN201780048506.1A
Other languages
English (en)
Other versions
CN109564545A (zh
Inventor
维德海雅娜丹·卡尔雅娜孙达拉姆
格雷戈里·D·唐利
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.)
Advanced Micro Devices Inc
Original Assignee
Advanced Micro Devices 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 Advanced Micro Devices Inc filed Critical Advanced Micro Devices Inc
Publication of CN109564545A publication Critical patent/CN109564545A/zh
Application granted granted Critical
Publication of CN109564545B publication Critical patent/CN109564545B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0895Caches characterised by their organisation or structure of parts of caches, e.g. directory or tag array
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0811Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0813Multiuser, multiprocessor or multiprocessing cache systems with a network or matrix configuration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • G06F12/0817Cache consistency protocols using directory methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0864Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using pseudo-associative means, e.g. set-associative or hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • 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/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0842Multiuser, multiprocessor or multiprocessing cache systems for multiprocessing or multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0886Variable-length word access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/40Specific encoding of data in memory or cache
    • G06F2212/401Compressed data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Mathematical Physics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

压缩地址以进行传输的方法和设备包括在第一装置处从源接收事务,该事务包括针对第二装置上的存储器位置的存储器地址请求。确定存储器地址的第一部分是否存储在位于第一装置上的高速缓存中。如果存储器地址的第一部分未存储在高速缓存中,则将存储器地址的第一部分存储在高速缓存中,并且将整个存储器地址和与该第一部分的存储有关的信息传输到第二装置。如果存储器地址的第一部分存储在高速缓存中,则仅将存储器地址的第二部分和指示地址的第一部分存储在高速缓存中的方式的标识符传输到第二装置。

Description

用于压缩地址的方法和设备
相关申请的交叉引用
本申请要求于2016年8月17日提交的美国临时申请第62/376,096号和于2016年11月8日提交的美国申请第15/345,639号的权益,其内容以宛如全文阐述引用的方式并入本文。
背景技术
芯片(例如,处理器)之间的链路通过同一组线路传输控制信息和数据。例如,在全局存储器互连(GMI)链路上,传输的每一个链路数据包为128B宽。典型的通过链路进行的请求传输包括“请求”命令、“响应”命令和“确认”(ACK)命令,以完成事务。这三个命令是控制数据包,并且被视为开销。系统中典型的高速缓存线为64B。因此,为了通过链路传输64B的数据,需要使用4个链路数据包和另外的3个链路数据包来传输该命令数据包。
附图简述
从以下结合附图以实例的方式给出的描述中可以获得更详细的理解。
图1是在其中可以实施一个或多个所公开的实例的实例装置的框图;
图2是实例多管芯系统的框图;
图3是用于压缩地址的实例方法的流程图;并且
图4是索引和方式的实例表。
具体实施方式
由于在同一组线路上传输控制信息和数据的可用带宽和开销较低,处理器管芯之间的链路带宽是一种优质资源。为了节省链路(例如,GMI/GOP/HT/PCIe)带宽,可以对呈现高度本地性的地址流进行压缩。虽然本文更详细地描述了该方法,但是发送链路控制器(例如,链路接口模块)保持每请求流传输的最后最高地址位,该位在本文所述的上下文中指代特定处理器(例如,中央处理单元(CPU))、线程或输入/输出(I/O)流。当后续请求地址的较高位与来自相同流的所保存的最后请求中的较高位相匹配时,请求数据包被标记为被压缩的地址,并且较高位未被包括在封包的GMI数据包中。响应于接受地址经压缩的请求,接收链路控制器然后通过检索本地保持的相同流的最后请求的较高地址位的副本来重新生成完整的请求地址。
例如,本文公开了一种用于压缩地址的方法。该方法包括:在第一装置处从源接收包括针对第二装置上的存储器位置的存储器地址请求的事务,其中该存储器地址包括第一部分和第二部分。确定存储器地址的第一部分是否存储在位于第一装置上的高速缓存中。如果存储器地址的第一部分未存储在位于第一装置上的高速缓存中,则将存储器地址的第一部分存储在第一装置的高速缓存中,并且将整个未压缩存储器地址和与该第一部分的存储有关的信息传输到第二装置。如果存储器地址的第一部分存储在位于第一装置上的高速缓存中,则将仅包括存储器地址的第二部分的经压缩存储器地址和指示该地址的第一部分存储在第一装置的高速缓存中的方式的标识符传输到第二装置。
图1是在其中可以实施一个或多个所公开的实施方案的实例装置100的框图。装置100可以包括例如计算机、游戏装置、手持式装置、机顶盒、电视、移动电话或平板计算机。装置100包括处理器102、存储器104、存储装置106、一个或多个输入装置108以及一个或多个输出装置110。装置100还可以任选地包括输入驱动器112和输出驱动器114。
处理器102可以包括中央处理单元(CPU)、图形处理单元(GPU),CPU和GPU位于相同的管芯上,或者包括一个或多个处理器内核,其中每一个处理器内核可以是CPU或GPU。存储器104可以位于与处理器102相同的管芯上,或者可以与处理器102分开设置。存储器104可以包括易失性或非易失性存储器,例如随机存取存储器(RAM)、动态RAM(DRAM)或高速缓存。
存储装置106可以包括固定或可抽换式存储装置,例如硬盘驱动器、固态驱动器、光盘或闪存驱动器。输入装置108可以包括键盘、小键盘、触摸屏、触摸板、检测器、麦克风、加速度计、陀螺仪、生物扫描仪或网络连接(例如,用于传输和/或接受无线IEEE 802信号的无线局域网卡)。输出装置110可以包括显示器、扬声器、打印机、触觉反馈装置、一个或多个灯、天线或网络连接(例如,用于传输和/或接受无线IEEE 802信号的无线局域网卡)。
输入驱动器112与处理器102和输入装置108通信,并且容许处理器102接收来自输入装置108的输入。输出驱动器114与处理器102和输出装置110通信,并且容许处理器102向输出装置110发送输出。应当注意的是,输入驱动器112和输出驱动器114是任选部件,并且在不存在输入驱动器112和输出驱动器114的情况下,装置100将以相同的方式进行操作。
图2是多管芯设备200的实例的框图。管芯设备200包括一个或多个管芯210(例如,指定为管芯1 2101、管芯2 2102和管芯3 2103)。每一个管芯210包括链路控制器211、链路地址高速缓存212、I/O装置213和处理器214。高速缓存212可以基本上类似于上文在图1中描述的存储器104。I/O装置可以包括上述图1的元件108、110、112和114,并且处理器214可以基本上类似于上文在图1中描述的处理器102。链路控制器211控制管芯210之间的通信。例如,如图2所示,管芯2 2102与管芯1 2101和管芯3 2103通信。因此,用于各个管芯210中的每一对的链路控制器211控制这两个管芯之间的通信链路。每一个管芯210中的链路控制器211与相同管芯210内的高速缓存212、I/O装置213和处理器214通信以帮助执行下文描述的压缩地址的方法。
图3是用于压缩地址的实例方法300的流程图。在步骤310中,源会生成事务,其中事务包括存储在与生成事务的源不同的管芯210上的存储器地址位置。例如,重新参照图2,在管芯1 2101的处理器214上运行的线程生成包括位于管芯2 2102上的存储器中的存储器地址的事务。也就是说,在管芯1 2101的处理器214上运行的线程生成对位于管芯2 2102上的DRAM的读或写,或者在执行期间需要获取位于管芯2 2102上的地址的代码。或者,管芯12101的I/O装置213生成位于管芯2 2102上的与输入/输出事务(例如,读或写)有关的地址。也可能存在地址位于管芯3 2103上或位于存在的任何其他额外的管芯上的情况。
一旦(例如,通过管芯1 2101上的源)生成事务,管芯1 2101的链路控制器211就形成索引,并且在本地高速缓存212中对标签部分进行比较来进行匹配(步骤320)。标签部分指代生成的事务中的存储器地址的较高位,并且例如在未压缩的128位宽的存储器地址中为28位宽。
例如,基于唯一标识每一个流的信息形成索引。这包括识别哪个CPU、内核、线程或I/O装置生成了地址的信息。另外,地址位、虚拟通道指示符、读/写指示符或其他信息的某些组合可以用于将来自特定源(例如,线程或I/O流)的事务映射到高速缓存中的特定索引。因此,每一个流映射到特定的索引,使得不相关的流不会连续地替换高速缓存中的地址并使效率降低。
有时,诸如CPU的相同装置或生成线程的装置例如会生成多个地址流。生成的事务可以包括经由一个或多个地址流来读存储器、经由不同的地址流来写入存储器的一个或多个不同区域以及使用另一个地址流来获取代码的交错事务。生成流的过程所使用的流的数量没有硬性限制。
因此,每一个高速缓存索引包括多种关联方式(例如,在本案中为4种),这允许高速缓存包括最后4个不同的地址流(即,较高位)。I/O装置可以对更多的地址流进行交错。因此,每I/O源分配多个索引以便跨更多索引来分配地址流,以避免有用地址过早地被覆写。在本案中,使用一些地址位将相关地址映射到不同的条目。此外,因为读和写是独立的地址流,所以读和写被映射到不同的条目。应当注意的是,接收链路控制器需要具有相同的可用信息,并且使用相同的算法来针对特定事务生成高速缓存索引,以便可以在解压缩数据包时找到用于存储新地址的条目或从中读地址的条目。在步骤330中,确定标签是否与存储在本地高速缓存中的标签相匹配。例如,管芯1 2101的链路控制器211检查标签是否与存储在管芯1 2101的高速缓存存储器212中的标签相匹配。如果在步骤330中没有匹配,则标签以本地高速缓存存储器的特定方式进行存储,并且将包括整个地址和与应当使用哪种方式有关的信息的未压缩数据包传输到接收链路控制器(步骤340)。
因此,地址信息以由发送方指示的高速缓存的特定方式进行存储。例如,选择不包括地址的任何方式(例如,未标记为“有效”)。如果所有方式都有效,则(例如,随机地)选择一个。在替代实例中,跟踪并替换最近最少使用的条目(分配或用于压缩数据包)。例如,如果管芯1 2101的链路控制器211接收包括其标签与存储在管芯12101的高速缓存存储器212(即,管芯1 2101的本地高速缓存存储器)中的标签不相匹配的地址的事务,则管芯1 2101的链路控制器211将指示标签的索引及该标签的存储方式存储在管芯1 2101的高速缓存存储器212中的表中。该方式指示存储标签的方法(“方式”),并且可以指示来自生成地址的源的事务类型(例如,从处理器获取指令、读或写请求)。
图4是可以存储在高速缓存存储器中的索引和方式的实例表400。表400包括对应于行0-40的多个索引410(指定为4100、4101、4102、……、41039和41040)。虽然描述了40个索引,但是根据需要该表可以包括更多或更少的索引。另外,表400中指示出了四种方式420(指定为4201、……、4204)。同样,应当注意的是,可以根据需要存储更多或更少种方式。表400还可以根据事务的源而被进一步分隔。例如,如图4所示,行0-31对应于CPU上运行的线程所生成的CPU事务。行32-35对应于I/O读事务,同时行36-40对应于I/O写事务。标签存储在对应于索引行(即,410)和方式列(即,420)的单元中。
因此,重新参考步骤340,如果管芯1 2101的链路控制器211在步骤330中没有在本地存储器中找到对标签的匹配,则形成索引并将标签存储在表400中的方式中。例如,如果从处理器214上运行的线程接收到事务,则标签可以存储在索引0、方式0(即,行4100、列4201)中。应当注意的是,如果高速缓存存储器已满,则在存储新索引之前首先需要删除索引。因此,如果存在表400已满的情况,则管芯管芯1 2101的链路控制器211选择一个索引来删除,并且将新生成的地址标签和方式存储在该索引行中。例如,选择待替换的索引中的任何方式,但是每一个索引通过索引生成算法绑定到特定源,使得特定事务映射到一个索引,并且映射到该索引的任何事务只能存取该索引。
或者,发送链路控制器跟踪与特定事务源相关联的索引,并且删除针对该源存储的索引。例如,如果从处理器线程“5”接收到事务,则管芯1 2101上的链路控制器检查哪些索引与线程5相关联,删除这些索引中的一个索引,并且存储针对新事务所形成的新索引。作为另一种替代,识别最近最少使用的地址并删除该索引。
一旦存储了标签,管芯1 2101的链路控制器211就将未压缩数据包(包括整个地址和与存储方式有关的信息)传输到管芯2 2102的链路控制器。与标签和存储方式相关的信息以两个位的形式添加到数据包的例如识别方式的报头中。也就是说,发送1个位以指示地址高速缓存应当分配当前地址和2个位,这2个位指示与当前事务映射的单个索引相关联的4种方式中的哪一种应当被写。索引源自未压缩事务的内容。为了避免冲突,管芯1 2101上的发送链路控制器在将当前事务地址传输到管芯2 2102上的链路控制器之前,以与其高速缓存上更新/匹配的相同顺序传输存取相同索引的所有事务。否则,如果在处理与相同索引相关联的第一事务之前后续事务修改了该索引,则接收链路控制器将不会存储或查找与传输的第一事务相关的标签和方式的正确位置。
在步骤350中,接收链路控制器(即,管芯2 2102上的链路控制器)接收用于处理的整个地址以及与存储方式有关的信息,并且将标签存储在位于管芯2 2102上的高速缓存存储器中的相应表400中。
现在重新参考步骤330,其中标签与本地高速缓存存储器中的标签和方式相匹配,管芯1 2101的链路控制器将经压缩数据包和识别标签存储的方式的指针位传输到管芯22102上的接收链路控制器(步骤360)。例如,管芯1 2101的链路控制器211接收包括具有与存储在管芯1 2101的高速缓存存储器212的表400中的标签相匹配的标签的地址的事务。
在本实例案例中,管芯1 2101的链路控制器211从地址中移除较高位(即,标签),并且仅将地址的较低位部分以及指示在表400中标签存储的方式的两位指针传输到管芯22102上的接收链路控制器。接收链路控制器(即,在该实例中为管芯2 2102的链路控制器)读方式信息并且从管芯2 2102的高速缓存存储器中的表400中存取标签位来重新创建整个未压缩数据包以进行处理(步骤370)。
所提供的方法可以在通用计算机、处理器或处理器内核中实施。作为实例,适当的处理器包括通用处理器、专用处理器、常规处理器、数字信号处理器(DSP)、多个微处理器、图形处理器、与DSP内核相关联的一个或多个微处理器、控制器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)电路、任何其他类型的集成电路(IC)和/或状态机。这种处理器可以通过使用经处理的硬件描述语言(HDL)指令的结果和包括网表的其他中间数据(这种指令能够存储在计算机可读介质上)来配置制造过程以进行制造。这种处理的结果可以是掩模作品,然后用于半导体制造过程以制造实施本实施方案的各方面的处理器。
本文提供的方法或流程可以在计算机程序、软件或结合至非暂时性计算机可读存储介质中的固件中实施,以由通用目的计算机或处理器执行。非暂时性计算机可读存储介质的实例包括:只读存储器(ROM)、随机存取存储器(RAM)、寄存器、高速缓存存储器、半导体存储器装置、诸如内部硬盘和可移动磁盘的磁性介质、磁光介质以及诸如CD-ROM光盘和数字通用光盘(DVD)的光学介质。
而且,虽然关于两个管芯(例如,管芯1 2101和管芯2 2102)之间的通信描述了上述方法或流程图,但是任何管芯之间也可以进行通信。
本文公开了一种设备。该设备包括第一链路控制器和可操作地连接到第一链路控制器的第一高速缓存。第一链路控制器从源接收事务,该事务包括针对第二设备上的存储器位置的存储器地址请求,其中存储器地址包括第一部分和第二部分。第一链路控制器确定存储器地址的第一部分是否存储在第一高速缓存中。如果存储器地址的第一部分未存储在第一高速缓存中,则第一链路控制器将存储器地址的第一部分存储在第一高速缓存中,并且将整个未压缩存储器地址和与该第一部分的存储有关的信息传输到第二设备。如果存储器地址的第一部分存储在第一高速缓存中,则第一链路控制器将仅包括存储器地址的第二部分的经压缩存储器地址和指示存储器地址的第一部分存储在第一高速缓存中的方式的标识符传输到第二设备。
本文公开了一种其上记录有指令的非暂时性计算机可读介质,所述指令在由计算装置执行时使计算装置执行操作。该操作包括:在第一装置处从源接收包括针对第二装置上的存储器位置的存储器地址请求的事务,其中该存储器地址包括第一部分和第二部分。确定存储器地址的第一部分是否存储在位于第一装置上的高速缓存中。如果存储器地址的第一部分未存储在位于第一装置上的高速缓存中,则将存储器地址的第一部分存储在第一装置的高速缓存中,并且将整个未压缩存储器地址和与该第一部分的存储有关的信息传输到第二装置。如果存储器地址的第一部分存储在位于第一装置上的高速缓存中,则将仅包括存储器地址的第二部分的经压缩存储器地址和指示该存储器地址的第一部分存储在第一装置的高速缓存中的方式的标识符传输到第二装置。
本文公开了一种系统。该系统包括第一装置和第二装置,其中第一装置包括第一链路控制器、第一高速缓存、第一处理器和第一输入/输出(I/O)装置,第二装置包括第二链路控制器、第二高速缓存、第二处理器和第二I/O装置。第一链路控制器从第一处理器或第一I/O装置接收包括针对第二装置上的存储器位置的存储器地址请求的事务,其中存储器地址包括第一部分和第二部分。第一链路控制器确定存储器地址的第一部分是否存储在第一高速缓存中。如果存储器地址的第一部分未存储在第一高速缓存中,则第一链路控制器将存储器地址的第一部分存储在第一高速缓存中,并且将整个未压缩存储器地址和与该第一部分的存储有关的信息传输到第二装置。如果存储器地址的第一部分存储在第一高速缓存中,则第一链路控制器将仅包括存储器地址的第二部分的经压缩存储器地址和指示存储器地址的第一部分存储在第一高速缓存中的方式的标识符传输到第二装置。第二链路控制器在接收到与第一部分的存储有关的信息后,将与第一部分的存储有关的信息存储在第二高速缓存中。在接收到经压缩存储器地址和指示存储器地址的第一部分存储在第一高速缓存中的方式的标识符时,第二链路控制器基于标识符从位于第二装置上的第二高速缓存中检索存储器地址的第一部分,并且重建整个未压缩的存储器地址。
在一些实例中,第二装置在接收到与第一部分的存储有关的信息后,将与第一部分的存储有关的信息存储在位于第二装置上的高速缓存中。在一些实例中,第二装置在接收到经压缩存储器地址和指示地址的第一部分存储在第一装置的高速缓存中的方式的标识符时,基于标识符从位于第二装置上的高速缓存中检索存储器地址的第一部分,并且重建整个未压缩的存储器地址。在一些实例中,重建包括将第一部分附接到第二部分。
在一些实例中,第一部分是包括未压缩存储器地址的较高位的标签。在一些实例中,标签存储在位于第一装置上的高速缓存中的表中的位置中,该位置与生成事务的源相关联。在一些实例中,标签存储在与存储标签的方式相关联的表中。在一些实例中,标签存储在表中的行中,该行利用标签所存储的表索引来识别,并且标签还存储在对应于行的列中,该列与标签所存储的方式相关联。在一些实例中,一个或多个索引行与特定源相关联。
在一些实例中,源包括第一装置的处理器或输入/输出(I/O)装置。在一些实例中,索引行与多个方式列相关联。在一些实例中,事务类型包括以下中的一个或多个:程序执行线程、读请求或写请求。在一些实例中,与I/O装置相关联的特定行索引与读请求或写请求相关联。
本文公开了一种设备。该设备包括第一链路控制器和可操作地连接到第一链路控制器的第一高速缓存。第一链路控制器从源接收事务,该事务包括针对第二设备上的存储器位置的存储器地址请求,其中存储器地址包括第一部分和第二部分。第一链路控制器确定存储器地址的第一部分是否存储在第一高速缓存中。如果存储器地址的第一部分未存储在第一高速缓存中,则第一链路控制器将存储器地址的第一部分存储在第一高速缓存中,并且将整个未压缩存储器地址和与该第一部分的存储有关的信息传输到第二设备。如果存储器地址的第一部分存储在第一高速缓存中,则第一链路控制器将仅包括存储器地址的第二部分的经压缩存储器地址和指示存储器地址的第一部分存储在第一高速缓存中的方式的标识符传输到第二设备。

Claims (44)

1.一种压缩地址以用于通过链路从第一装置传输到第二装置的方法,其包括:
在所述第一装置处从源接收包含针对所述第二装置上的存储器位置的存储器地址的请求的事务,其中所述存储器地址包含第一部分和第二部分;
确定所述存储器地址的所述第一部分是否存储在位于所述第一装置上的高速缓存中;并且
如果所述存储器地址的所述第一部分未存储在位于所述第一装置上的所述高速缓存中,则将所述存储器地址的所述第一部分存储在所述第一装置的所述高速缓存中,并且将整个存储器地址和与所述第一部分的存储有关的信息传输到所述第二装置,并且
如果所述存储器地址的所述第一部分存储在位于所述第一装置上的所述高速缓存中,则仅将所述存储器地址的所述第二部分以及指示所述存储器地址的所述第一部分存储在所述第一装置的所述高速缓存中的方式的标识符传输到所述第二装置。
2.根据权利要求1所述的方法,其进一步包括所述第二装置在接收到与所述第一部分的所述存储有关的所述信息时,将与所述第一部分的所述存储有关的所述信息存储在位于所述第二装置上的高速缓存中。
3.根据权利要求2所述的方法,其进一步包括所述第二装置在接收到所述存储器地址的所述第二部分和指示所述存储器地址的所述第一部分存储在所述第一装置的所述高速缓存中的所述方式的所述标识符时:
基于所述标识符从位于所述第二装置上的所述高速缓存中检索所述存储器地址的所述第一部分;并且
重建所述整个存储器地址。
4.根据权利要求3所述的方法,其中所述重建包含将所述第一部分附接到所述第二部分。
5.根据权利要求1所述的方法,其中所述第一部分是包含所述整个存储器地址的较高位的标签。
6.根据权利要求5所述的方法,其进一步包括将所述标签存储在位于所述第一装置上的所述高速缓存中的表中的位置中,所述位置与生成所述事务的所述源相关联。
7.根据权利要求6所述的方法,其进一步包括将所述标签存储在与存储所述标签的方式相关联的所述表中。
8.根据权利要求7所述的方法,其中所述标签存储在所述表中的行中,所述行用指示所述标签存储在所述表中的位置的索引标识,并且其中所述标签存储在与存储所述标签的所述方式相关联的列中。
9.根据权利要求8所述的方法,其中一个或多个索引行与特定源相关联。
10.根据权利要求9所述的方法,其中所述源包含以下中的任何一个:所述第一装置的处理器或输入/输出(I/O)装置。
11.根据权利要求10所述的方法,其中索引行与多个方式列相关联。
12.根据权利要求11所述的方法,其中事务类型包含以下中的一个或多个:程序执行线程、读请求或写请求。
13.根据权利要求10所述的方法,其中与所述I/O装置相关联的特定行索引与以下事务中的一个或多个相关联:读请求或写请求。
14.一种设备,其包括:
第一链路控制器;以及
第一高速缓存,其可操作地连接到所述第一链路控制器,其中
所述第一链路控制器:
从源接收事务,所述事务包含针对第二设备上的存储器位置的存储器地址的请求,并且其中所述存储器地址包含第一部分和第二部分,
确定所述存储器地址的所述第一部分是否存储在所述第一高速缓存中,并且
如果所述存储器地址的所述第一部分未存储在所述第一高速缓存中,则将所述存储器地址的所述第一部分存储在所述第一高速缓存中,并且将整个存储器地址和与所述第一部分的存储有关的信息传输到所述第二设备,并且
如果所述存储器地址的所述第一部分存储在所述第一高速缓存中,则仅将所述存储器地址的所述第二部分和指示所述存储器地址的所述第一部分存储在所述第一高速缓存中的方式的标识符传输到所述第二设备。
15.根据权利要求14所述的设备,其中所述第一部分是包含所述整个存储器地址的较高位的标签。
16.根据权利要求15所述的设备,其进一步包括将所述标签存储在所述第一高速缓存中的表中的位置中,所述位置与生成所述事务的所述源相关联。
17.根据权利要求16所述的设备,其进一步包括将所述标签存储在与存储所述标签的方式相关联的所述表中。
18.根据权利要求17所述的设备,其中所述标签存储在所述表中的行中,所述行用指示所述标签存储在所述表中的位置的索引标识,并且其中所述标签存储在与存储所述标签的方式相关联的列中。
19.根据权利要求18所述的设备,其中一个或多个索引行与特定源相关联。
20.根据权利要求19所述的设备,其中索引行与多个方式列相关联。
21.根据权利要求14所述的设备,其进一步包括处理器。
22.根据权利要求21所述的设备,其中所述处理器是生成所述事务的所述源。
23.根据权利要求22所述的设备,其中事务类型包含以下中的一个或多个:程序执行线程、读请求或写请求。
24.根据权利要求14所述的设备,其进一步包括输入/输出(I/O)装置。
25.根据权利要求24所述的设备,其中所述I/O装置是生成所述事务的所述源。
26.根据权利要求25所述的设备,其中与所述I/O装置相关联的特定行索引与以下事务中的一个或多个相关联:读请求或写请求。
27.根据权利要求14所述的设备,其中在通过来自所述第二设备的第二链路控制器接收到与存储器地址的第一部分的存储有关的信息时,所述第二链路控制器将与所述第一部分的所述存储有关的所述信息存储在所述第二设备的第二高速缓存中。
28.根据权利要求27所述的设备,其中所述第二链路控制器在接收到所述存储器地址的所述第二部分和指示所述存储器地址的所述第一部分存储在所述第一高速缓存中的所述方式的所述标识符时:
基于所述标识符从定位的所述第二高速缓存中检索所述存储器地址的所述第一部分;并且
重建所述整个存储器地址。
29.根据权利要求28所述的设备,其中所述重建包含将所述第一部分附接到所述第二部分。
30.一种上面记录有指令的非暂时性计算机可读介质,所述指令在由计算装置执行时使所述计算装置执行包含以下的操作:
在所述计算装置处从源接收包含针对第二装置上的存储器位置的存储器地址的请求的事务,其中所述存储器地址包含第一部分和第二部分;
确定所述存储器地址的所述第一部分是否存储在位于所述计算装置上的高速缓存中;并且
如果所述存储器地址的所述第一部分未存储在位于所述计算装置上的所述高速缓存中,则将所述存储器地址的所述第一部分存储在所述计算装置的所述高速缓存中,并且将整个存储器地址和与所述第一部分的存储有关的信息传输到所述第二装置,并且
如果所述存储器地址的所述第一部分存储在位于所述计算装置上的所述高速缓存中,则仅将所述存储器地址的所述第二部分以及指示所述存储器地址的所述第一部分存储在所述计算装置的所述高速缓存中的方式的标识符传输到所述第二装置。
31.根据权利要求30所述的非暂时性计算机可读介质,其进一步包括所述第二装置在接收到与所述第一部分的所述存储有关的所述信息时,将与所述第一部分的所述存储有关的所述信息存储在位于所述第二装置上的高速缓存中。
32.根据权利要求31所述的非暂时性计算机可读介质,其进一步包括所述第二装置在接收到所述存储器地址的所述第二部分和指示所述存储器地址的所述第一部分存储在所述计算装置的所述高速缓存中的方式的所述标识符时:
基于所述标识符从位于所述第二装置上的所述高速缓存中检索所述存储器地址的所述第一部分;并且
重建所述整个存储器地址。
33.根据权利要求32所述的非暂时性计算机可读介质,其中所述重建包含将所述第一部分附接到所述第二部分。
34.根据权利要求30所述的非暂时性计算机可读介质,其中所述第一部分是包含所述整个存储器地址的较高位的标签。
35.根据权利要求34所述的非暂时性计算机可读介质,其进一步包括将所述标签存储在位于所述计算装置上的所述高速缓存中的表中的位置中,所述位置与生成所述事务的所述源相关联。
36.根据权利要求35所述的非暂时性计算机可读介质,其进一步包括将所述标签存储在与存储所述标签的方式相关联的所述表中。
37.根据权利要求36所述的非暂时性计算机可读介质,其中所述标签存储在所述表中的行中,所述行用指示所述标签存储在所述表中的位置的索引标识,并且其中所述标签存储在与存储所述标签的所述方式相关联的列中。
38.根据权利要求37所述的非暂时性计算机可读介质,其中一个或多个索引行与特定源相关联。
39.根据权利要求38所述的非暂时性计算机可读介质,其中所述源包含以下中的任何一个:所述计算装置的处理器或输入/输出(I/O)装置。
40.根据权利要求39所述的非暂时性计算机可读介质,其中索引行与多个方式列相关联。
41.根据权利要求40所述的非暂时性计算机可读介质,其中事务类型包含以下中的一个或多个:程序执行线程、读请求或写请求。
42.根据权利要求39所述的非暂时性计算机可读介质,其中与所述I/O装置相关联的特定行索引与以下事务中的一个或多个相关联:读请求或写请求。
43.一种系统,其包括:
第一装置,其包含第一链路控制器、第一高速缓存、第一处理器和第一输入/输出(I/O)装置;以及
第二装置,其包含第二链路控制器、第二高速缓存、第二处理器和第二I/O装置,其中
所述第一链路控制器:
从所述第一处理器或所述第一I/O装置接收包含针对所述第二装置上的存储器位置的存储器地址的请求的事务,并且其中所述存储器地址包含第一部分和第二部分,
确定所述存储器地址的所述第一部分是否存储在所述第一高速缓存中,并且
如果所述存储器地址的所述第一部分未存储在所述第一高速缓存中,则将所述存储器地址的所述第一部分存储在所述第一高速缓存中,并且将整个存储器地址和与所述第一部分的存储有关的信息传输到所述第二装置,并且
如果所述存储器地址的所述第一部分存储在所述第一高速缓存中,则仅将所述存储器地址的所述第二部分和指示所述存储器地址的所述第一部分存储在所述第一高速缓存中的方式的标识符传输到所述第二装置,并且
其中所述第二链路控制器:
在接收到与所述第一部分的所述存储有关的所述信息时,将与所述第一部分的所述存储有关的所述信息存储在所述第二高速缓存中,或者
在接收到所述存储器地址的所述第二部分和指示所述存储器地址的所述第一部分存储在所述第一高速缓存中的所述方式的所述标识符时:
基于所述标识符从位于所述第二装置上的所述第二高速缓存中检索所述存储器地址的所述第一部分;并且
重建所述整个存储器地址。
44.根据权利要求43所述的系统,其中所述重建包含将所述第一部分附接到所述第二部分。
CN201780048506.1A 2016-08-17 2017-08-04 用于压缩地址的方法和设备 Active CN109564545B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201662376096P 2016-08-17 2016-08-17
US62/376,096 2016-08-17
US15/345,639 US10042576B2 (en) 2016-08-17 2016-11-08 Method and apparatus for compressing addresses
US15/345,639 2016-11-08
PCT/US2017/045639 WO2018034875A1 (en) 2016-08-17 2017-08-04 Method and apparatus for compressing addresses

Publications (2)

Publication Number Publication Date
CN109564545A CN109564545A (zh) 2019-04-02
CN109564545B true CN109564545B (zh) 2021-02-02

Family

ID=61191652

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201780048506.1A Active CN109564545B (zh) 2016-08-17 2017-08-04 用于压缩地址的方法和设备

Country Status (6)

Country Link
US (1) US10042576B2 (zh)
EP (2) EP4220415A3 (zh)
JP (1) JP6768928B2 (zh)
KR (1) KR102219845B1 (zh)
CN (1) CN109564545B (zh)
WO (1) WO2018034875A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10031834B2 (en) 2016-08-31 2018-07-24 Microsoft Technology Licensing, Llc Cache-based tracing for time travel debugging and analysis
US10042737B2 (en) 2016-08-31 2018-08-07 Microsoft Technology Licensing, Llc Program tracing for time travel debugging and analysis
US10310963B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using index bits in a processor cache
US10489273B2 (en) 2016-10-20 2019-11-26 Microsoft Technology Licensing, Llc Reuse of a related thread's cache while recording a trace file of code execution
US10310977B2 (en) 2016-10-20 2019-06-04 Microsoft Technology Licensing, Llc Facilitating recording a trace file of code execution using a processor cache
US10540250B2 (en) * 2016-11-11 2020-01-21 Microsoft Technology Licensing, Llc Reducing storage requirements for storing memory addresses and values
US10318332B2 (en) 2017-04-01 2019-06-11 Microsoft Technology Licensing, Llc Virtual machine execution tracing
CN109240944B (zh) * 2018-08-16 2021-02-19 上海天数智芯半导体有限公司 一种基于可变长缓存行的数据读写方法
US11831565B2 (en) 2018-10-03 2023-11-28 Advanced Micro Devices, Inc. Method for maintaining cache consistency during reordering
CN111126589B (zh) * 2019-12-31 2022-05-20 昆仑芯(北京)科技有限公司 神经网络数据处理装置、方法和电子设备
KR102494444B1 (ko) * 2020-11-17 2023-02-06 성균관대학교산학협력단 어드레스 압축 방법 및 장치
JP2023079640A (ja) * 2021-11-29 2023-06-08 富士通株式会社 演算処理装置および演算処理方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477613B1 (en) * 1999-06-30 2002-11-05 International Business Machines Corporation Cache index based system address bus
CN1853170A (zh) * 2003-09-30 2006-10-25 英特尔公司 压缩高速缓存内数据的机制
CN101419574A (zh) * 2003-12-31 2009-04-29 英特尔公司 能在使用压缩的高速缓存行信息价值的计算系统中使用的处理器和存储器控制器

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0735487B1 (en) * 1995-03-31 2001-10-31 Sun Microsystems, Inc. A fast, dual ported cache controller for data processors in a packet switched cache coherent multiprocessor system
US6449689B1 (en) 1999-08-31 2002-09-10 International Business Machines Corporation System and method for efficiently storing compressed data on a hard disk drive
US6795897B2 (en) 2002-05-15 2004-09-21 International Business Machines Corporation Selective memory controller access path for directory caching
US20080229026A1 (en) 2007-03-15 2008-09-18 Taiwan Semiconductor Manufacturing Co., Ltd. System and method for concurrently checking availability of data in extending memories
US20090006757A1 (en) 2007-06-29 2009-01-01 Abhishek Singhal Hierarchical cache tag architecture
US9026568B2 (en) 2012-03-30 2015-05-05 Altera Corporation Data compression for direct memory access transfers
US9558120B2 (en) * 2014-03-27 2017-01-31 Intel Corporation Method, apparatus and system to cache sets of tags of an off-die cache memory

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6477613B1 (en) * 1999-06-30 2002-11-05 International Business Machines Corporation Cache index based system address bus
CN1853170A (zh) * 2003-09-30 2006-10-25 英特尔公司 压缩高速缓存内数据的机制
CN101419574A (zh) * 2003-12-31 2009-04-29 英特尔公司 能在使用压缩的高速缓存行信息价值的计算系统中使用的处理器和存储器控制器

Also Published As

Publication number Publication date
CN109564545A (zh) 2019-04-02
EP4220415A3 (en) 2023-09-06
JP6768928B2 (ja) 2020-10-14
EP3500935A1 (en) 2019-06-26
US10042576B2 (en) 2018-08-07
KR20190032527A (ko) 2019-03-27
WO2018034875A1 (en) 2018-02-22
JP2019525354A (ja) 2019-09-05
EP4220415A2 (en) 2023-08-02
US20180052631A1 (en) 2018-02-22
KR102219845B1 (ko) 2021-02-24
EP3500935A4 (en) 2020-04-08

Similar Documents

Publication Publication Date Title
CN109564545B (zh) 用于压缩地址的方法和设备
US10198215B2 (en) System and method for multi-stream data write
JP2019067417A (ja) 最終レベルキャッシュシステム及び対応する方法
CN109085997A (zh) 用于非易失性存储器的存储器高效持续键值储存
EP2732374B1 (en) Mobile memory cache read optimization
TWI744289B (zh) 使用多個最後階層快取線提供記憶體帶寬壓縮之以一中央處理單元(cpu)為基礎之系統及方法
US20150347012A1 (en) System and method of interleaving data retrieved from first and second buffers
US20150143045A1 (en) Cache control apparatus and method
US10585642B2 (en) System and method for managing data in a ring buffer
TW201814518A (zh) 使用在以一中央處理器單元為基礎的系統中之適應性壓縮提供記憶體頻寬壓縮
US11550508B2 (en) Semiconductor storage device and control method thereof
US10489350B2 (en) Data compression with inline compression metadata
CN115883022B (zh) Dma传输控制方法、装置、电子设备及可读存储介质
KR20090098275A (ko) 플래시 메모리 시스템
US8041903B2 (en) Processor and method for controlling memory
US11853614B2 (en) Synchronous write method and device, storage system and electronic device
CN117312201B (zh) 一种数据传输方法、装置及加速器设备、主机和存储介质
US11880686B2 (en) Devices transferring cache lines, including metadata on external links
US9298673B2 (en) Electronic device and information processing method
US10719440B2 (en) Semiconductor device and memory access method
US20240004577A1 (en) Extending functionality of memory controllers in a processor-based device
CN117337425A (zh) 存储装置、方法及电子设备
CN117971707A (zh) 一种系统级芯片的访问处理方法、系统级芯片及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant