WO2014178683A1 - 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법 - Google Patents

프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법 Download PDF

Info

Publication number
WO2014178683A1
WO2014178683A1 PCT/KR2014/003955 KR2014003955W WO2014178683A1 WO 2014178683 A1 WO2014178683 A1 WO 2014178683A1 KR 2014003955 W KR2014003955 W KR 2014003955W WO 2014178683 A1 WO2014178683 A1 WO 2014178683A1
Authority
WO
WIPO (PCT)
Prior art keywords
data
prefetch
program code
cache
prefetching
Prior art date
Application number
PCT/KR2014/003955
Other languages
English (en)
French (fr)
Inventor
김준경
유동훈
김정욱
류수정
Original Assignee
삼성전자 주식회사
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 삼성전자 주식회사 filed Critical 삼성전자 주식회사
Publication of WO2014178683A1 publication Critical patent/WO2014178683A1/ko
Priority to US14/931,019 priority Critical patent/US9886384B2/en

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
    • 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/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • 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
    • 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/0875Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with dedicated cache, e.g. instruction or stack
    • 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/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/45Caching of specific data in cache memory
    • G06F2212/452Instruction code
    • 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
    • G06F2212/6026Prefetching based on access pattern detection, e.g. stride based prefetch
    • 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
    • G06F2212/6028Prefetching based on hints or prefetch instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • G06F8/4442Reducing the number of cache misses; Data prefetching

Definitions

  • the present invention relates to a cache control device for prefetching a cache and a prefetch method using the cache control device.
  • memory fetch instructions are hundreds to thousands of cycles in the processor cycle, which is the main contributor to the high-speed processing of the processor.
  • a cache which is a fast buffer memory, is placed between the memory and the processor.
  • the cache stores the data or instructions that are accessed to reduce the frequency of memory accesses, thus supporting the processor's high speed processing.
  • the cache has a small memory capacity but has an advantage of being faster than the memory, the cache is largely limited due to the size, power, and cost of the processor.
  • the processor needs to maximize the probability that data or instructions are needed in processing the program, thereby minimizing the latency caused by cache misses in the cache. Needs to be.
  • prefetching is generally applied to the cache.
  • the prefetch refers to predicting data or instructions required by the processor and prefetching the cache in advance so that the processor can process the program without delay.
  • the locality of memory addresses can be used for such prefetching. Intensity can be divided into temporal locality in which the same data is used continuously for a certain time, and spatial locality in which data is used in the used data address and a recognized address. However, there may still be a delay when the temporal and spatial intensity of the data is weak.
  • the present invention provides a cache control device that analyzes an access pattern, encodes a memory into one command, generates a prediction table, and performs a prefetch through profiling, and a prefetch method using the cache control device.
  • a cache control apparatus includes a pattern analysis module that analyzes a memory access pattern of a program code, an encoded memory access pattern, and generates a prefetch command, and prefetches the program code.
  • a code conversion module for inserting an instruction
  • a prefetch module for prefetching data into the cache when a prefetch instruction inserted in the program code is executed.
  • the cache control apparatus further includes an optimization module that converts a plurality of data simultaneously used into a structure so that a plurality of data simultaneously used may be prefetched into the cache by execution of an instruction inserted into the program code. can do.
  • the cache control apparatus may further include a prefetch table that stores input parameters of the prefetch instructions, and the prefetch module may execute the prefetch instructions inserted into the program code based on the input parameters.
  • the prefetch module may prefetch the data located in the regular pattern periodically.
  • the pattern analysis module may compile the program and convert the program into binary code, and analyze the access pattern through profiling the converted binary code.
  • the prefetch instruction may include an identifier (ID) for distinguishing various memory access patterns, a program counter (PC) for determining a data fetching point, a memory address of data to be fetched, and a number of data blocks to be fetched. More than one can be an input parameter.
  • ID identifier
  • PC program counter
  • the prefetch module may determine the memory address in which the data to be fetched in advance is stored by adding the base memory address and the distance value. For this purpose, the prefetch module can monitor the data bus to obtain the base memory address.
  • the cache control device characterized in that for executing a prefetch instruction of the program code using an empty slot of the VLIW (Very Long Instruction Word).
  • a method of analyzing a memory access pattern of a program code encoding the analyzed memory access pattern to generate a prefetch instruction, and generating the generated prefetch command. Inserting an instruction into the program code and prefetching data into the cache according to execution of a prefetch instruction inserted into the program code.
  • the prefetch method may further include converting the plurality of simultaneously used data into a structure such that the plurality of simultaneously used data may be prefetched from the cache by execution of a prefetch instruction inserted into the program code. have.
  • the prefetch method may further include generating a prefetch instruction, generating a prefetch table that stores input parameters of the prefetch instruction, and retrieving data in advance based on input parameters. You can execute the prefetch command inserted in.
  • the step of prefetching data into the cache may prefetch the data located in the regular pattern periodically according to the execution of the prefetch instruction.
  • the analyzing of the memory access pattern may include compiling a program, converting the program into binary code, and analyzing the access pattern through profiling the converted binary code.
  • the step of prefetching data into the cache may add the base memory address and the distance value to the memory address where the data to be fetched is stored. You can decide. In this case, the step of prefetching data into the cache may monitor the data bus to obtain a basic memory address.
  • the step of prefetching data into the cache may monitor a program counter (PC) to determine a point in time at which the data is to be fetched.
  • PC program counter
  • the number of instruction lines and hardware resources for prefetching can be obtained.
  • prefetching by dividing the various memory access patterns, prefetching is possible in various memory access patterns, and by reconfiguring the memory so that a plurality of data can be loaded in one access, the prefetch efficiency is maximized. can do.
  • 1 is a diagram for describing various memory access patterns of program code.
  • FIG. 2 is a block diagram for explaining an example of the configuration of the cache control device.
  • 3 is a source code for explaining an example of analyzing a memory access pattern of the pattern analysis module.
  • FIG. 4 is a memory diagram for explaining an example of a change in the data structure of the optimization module.
  • 5 is a source code for explaining an example of program code conversion of the code conversion module.
  • FIG. 6 is a flowchart illustrating a prefetch method according to an embodiment.
  • 1 is a diagram for describing various memory access patterns of program code.
  • data required for execution of program code may be stored in a memory in various structures.
  • the program code has various memory access patterns.
  • the program code when each data required for execution is input to the program code in order of one memory block size, the program code uses a linear memory access pattern. Have.
  • the program code accesses a linear by chunk memory. Will have a pattern.
  • the program code when the data required for execution is input to the program code at a predetermined interval in one memory block size, the program code has a striped memory access pattern. .
  • the program code when the data required for the execution of the program code is input at regular intervals in several memory block sizes, the program code is a strided by chunk-type memory. You have an access pattern.
  • data required for program execution may be arranged randomly.
  • FIG. 2 is a block diagram for explaining an example of the configuration of the cache control device.
  • the cache control apparatus 400 analyzes a memory access pattern of a program so that the processor 100 can process the program code without delay, and encodes it based on the analyzed memory access pattern (see FIG. 1).
  • a prefetch instruction is generated and data is prefetched into the cache 200 according to the generated prefetch instruction.
  • the cache control apparatus 400 includes a pattern analysis module 410, an optimization module 430, a code conversion module 450, a prefetch module 470, and a prefetch table 490.
  • the pattern analysis module 410 analyzes the standardized memory access pattern of the program code. More specifically, the pattern analysis module 410 compiles the program into a binary code by compiling the code, and analyzes the memory access pattern by profiling the converted binary code.
  • profiling is a form of dynamic program analysis that measures and analyzes program code through simulation.
  • the optimization module 430 changes the structure of the data stored in the memory 300 so that the plurality of data scattered and stored in the memory 300 may be fetched in advance by executing a single prefetch command.
  • a plurality of data may be used simultaneously.
  • the prefetch module 470 must execute a prefetch command several times to prefetch each of the plurality of data.
  • the optimization module 430 changes the structure of the data to prefetch a plurality of data used simultaneously by executing one prefetch instruction.
  • the optimization module 430 may change to a structure of a plurality of stored data of the memory 300 in order to be able to retrieve a plurality of data at a time by executing one prefetch instruction.
  • the optimization module 430 may modify the program code to execute the program code using the changed structure.
  • the optimization module 430 may determine whether to execute the prefetch command several times by using the information of the memory access pattern analyzed by the pattern analysis module 410.
  • the code conversion module 450 changes the program code based on a prefetch instruction generated by encoding the access pattern analyzed by the pattern analysis module 410. That is, the code conversion module 450 inserts a prefetch instruction into the program code.
  • the prefetch command allows data to be fetched in advance according to a standardized pattern in one execution.
  • the prefetch instruction may include an identifier (ID) for distinguishing various memory access patterns, a program counter (PC) for determining a data fetching point, a memory address of data to be fetched, and a block of data to be fetched.
  • ID identifier
  • PC program counter
  • Various data necessary for prefetching the data such as the number, may be provided as an input parameter.
  • code conversion module 450 may store input parameters required for the execution of the prefetch instruction in the prefetch table 490.
  • the prefetch module 470 prefetches data into the cache 200 when the prefetch instruction inserted into the program code by the code conversion module 450 is executed.
  • the prefetch module 470 may determine a point in time at which data is prefetched based on the prefetch monitored program counter value.
  • the prefetch module 470 may prefetch data located in a pattern that is periodically shaped according to execution of the prefetch command. In this case, the prefetch module 470 may monitor a program counter for periodic data withdrawal.
  • the prefetch module 470 may prefetch data by executing a prefetch command based on an input parameter stored in the prefetch table 490.
  • the prefetch module 470 adds the base memory address and the difference value stored in the table to obtain a memory address to be fetched.
  • the basic memory address may be a memory address obtained by monitoring the data bus, or a memory address of the last fetched data.
  • the prefetch module 470 can reduce the overhead for prefetching by prefetching data by using a prefetch command having only a base memory address and a difference value as parameters.
  • the prefetch table 490 receives and stores various parameters used as input parameters of the prefetch instruction from the code conversion module 450, and provides the input parameters stored in the prefetch module 470. More specifically, the prefetch table 490 includes information such as an identifier for distinguishing various memory access patterns, a program counter for determining a data fetching point, a memory address of data to be fetched, a size of a data block to be fetched, and the like. can do.
  • the memory address stored in the prefetch table 490 may store not only a physical memory address but also a difference value between a basic memory address and a memory address where data exists.
  • the basic memory address may be a specific memory address such as a memory address last retrieved, a memory address of data being transmitted through a data bus, and the like.
  • the cache control apparatus 400 is illustrated as being separate from the processor 100 for convenience of description. However, the cache control apparatus 400 and the processor 100 may be provided in one chip. Some elements of the processor may operate as the cache control device 400.
  • the memory 300 is not limited to a general memory but may be an L2 cache.
  • 3 is a source code for explaining an example of analyzing a memory access pattern of the pattern analysis module.
  • program codes may have various memory access patterns according to data storage structures (see FIG. 1). These various access patterns are analyzed by the pattern analysis module 410.
  • FIG. 3A is source code for storing memory access information accessed by a program in a tracer.
  • the pattern analysis module 410 may execute the source code of FIG. 3A and store the memory access information in a variable.
  • the memory access information refers to information required for a memory access pattern such as not only a memory address that needs access to execute a program, but also information about a memory fetch time and the number of memory fields in which one data is stored (ie, the size of each data). do.
  • the 3B is source code for analyzing a memory access pattern from memory access information stored in a tracer.
  • the pattern analysis module 410 analyzes the memory access pattern based on the tracer generated by executing the source code of FIG. More specifically, the pattern analysis module 410 calculates the interval (tracer-> GetMemAddr (int i)) between the memory fields storing each data while traversing the plurality of memory access information stored in the variable. Thereafter, the pattern analysis module 410 analyzes the memory access pattern based on the calculated interval between memory fields and the number of memory fields (data size) in which each data is stored.
  • the pattern analysis module 410 is a linear pattern when the calculated memory field interval is 1 and each data is stored in one memory field.
  • the interval is 3, and each data is stored across three memory fields.
  • the calculated memory field interval is 5, and each data is stored in one memory field. It can be analyzed in a striped pattern.
  • the source code of FIG. 3 is for explaining an example for analyzing a memory access pattern, and should not be interpreted as being limited to the source code of FIG. 3.
  • FIG. 4 is a memory diagram for explaining an example of a change in the data structure of the optimization module.
  • Figure 4 (a) is a view showing a data structure stored in the memory before the change by the optimization module
  • Figure 4 (b) is a view showing a data structure stored in the memory after the change by the optimization module.
  • [Table 1] is the program code before the change by the optimization module.
  • the cache control apparatus stores three data a [i], b [i], and c [i] which are used simultaneously for one add operation. Withdraw in advance. That is, the cache controller must prefetch data interspersed with three prefetch instructions in every loop.
  • the optimization module 430 changes the structure and program code of the data stored in the memory so as to prefetch a plurality of data used simultaneously by executing one prefetch instruction.
  • d [i] add (abc [i] .a, abc [i] .b, abc [i] .c);
  • [Table 2] is a program code after being changed by the optimization module.
  • the optimization module 430 changes the data structure and the program code to fetch data to be used simultaneously in each loop at once by executing one instruction.
  • the optimization module 430 converts three arrays a [i], b [i], c [i] into one array of structure.
  • the optimization module 430 is configured to store data used simultaneously (eg, a [0], b [0], c [0]) in one structure (eg ABC [0]) in the first loop cycle. Change to Thus, the cache control apparatus prefetches one structure ABC [i] with one prefetch instruction. Therefore, a plurality of data simultaneously used can be fetched in advance by executing one prefetch instruction.
  • the optimization module 430 may modify the program code as shown in Table 2 to reflect the changed data storage structure.
  • 5 is a source code for explaining an example of program code conversion of the code conversion module.
  • the code conversion module 450 may generate a prefetch instruction according to the analyzed access pattern, and convert the program code based on the generated prefetch instruction.
  • a prefetching instruction map includes an identifier 1 for distinguishing various access patterns, an interval 720 between data stored in memory, and the number of memory blocks storing one data ( 3)
  • the program counter R [16] for determining a data retrieval time may be provided as an input parameter.
  • the prefetch module 470 fetches data to the cache 200 in advance.
  • the prefetch module 470 may periodically execute the prefetch instruction according to the regularized pattern. Data can be retrieved in advance. In this way, the code conversion module 450 enables to prefetch data necessary for program code execution with several parameters. Thus, the software and hardware overhead due to prefetching is reduced.
  • the prefetch module 470 is spaced 720 times from the base memory address on the 16 program counter (PC). Three memory fields (Size) located at (Offset) are prefetched into the cache 200. In this case, the prefetch module 470 may monitor the data bus to obtain a basic memory address.
  • the prefetch module 470 defaults to every 16 program counters.
  • the fields may be prefetched into the cache 200 with three memories located at an interval of 720 from the memory address. That is, when the access pattern of the memory 300 is constant, the prefetch module 470 prefetches the data located in the predetermined pattern at regular intervals by executing one prefetch instruction.
  • FIG. 6 is a flowchart illustrating a prefetch method according to an embodiment.
  • the cache control apparatus analyzes a memory access pattern of a program code.
  • the cache control device may compile the program code, convert the program code into binary code, and profile the converted binary code to analyze the memory access pattern.
  • multimedia files such as music, images, and images are generally stored in a structured structure.
  • program code for processing multimedia files has a standardized memory access pattern.
  • Such a standardized memory access pattern may be analyzed by executing source code as shown in FIG. 3.
  • the cache control device generates a prefetch command according to the access pattern analyzed in step S103. More specifically, the cache control device encodes the access pattern analyzed in step S101 to generate a prefetch command. That is, when the analyzed access pattern is formalized, the prefetch instruction may be encoded to prefetch data necessary for executing the program code based on a few simple input parameters. For example, referring to FIG. 5, a prefetching instruction map includes an identifier 1 for distinguishing various access patterns, an interval 720 between data stored in memory, and the number of memory blocks storing one data ( 3) The program counter R [16] for determining a data retrieval time may be provided as an input parameter.
  • the cache control apparatus may generate a prefetch table storing various input parameters required for execution in the prefetch command in operation S103 (not shown).
  • the prefetch table includes an identifier (ID) for distinguishing various memory access patterns, a program counter (PC) for determining a data fetching point, a memory address of data to be fetched, and the number of data blocks to be fetched ( Information), and the like (see 440 of FIG. 2).
  • the cache control apparatus inserts the prefetch instruction generated in operation S103 into the program code.
  • Prefetch instructions are inserted in specific parts of the program code.
  • the inserted prefetch instruction should be inserted in a line (position) to allow data necessary for the execution of the program code to be fetched to the cache in advance.
  • the cache control apparatus changes the data structure so that the plurality of data scattered and stored in the memory can be retrieved at one time in step S107.
  • a plurality of data can be used at the same time for processing the program code.
  • the cache controller can fetch only one data in advance by executing one prefetch command. Therefore, if a plurality of data are scattered around the memory at the same time, the cache control device must execute a plurality of prefetch instructions.
  • the cache controller changes the data structure stored in the memory. By changing a plurality of data necessary at the same time into a structure and storing the data in adjacent memory cells, the cache control apparatus can prefetch a plurality of data used simultaneously by executing a single instruction.
  • the cache control apparatus may change the program code to reflect the changed data storage structure.
  • the input parameters of the program code is a structure ABC [i] .a, ABC [i]. b, ABC [i] .c).
  • the cache control apparatus may use the memory access pattern analyzed in step S101 in order to determine the structure of the data required for the execution of the program code and whether or not the simultaneous access.
  • step S107 is illustrated as being performed after step S103 in FIG. 6, it should be understood that the order of each step may be changed from each other, and each step may be performed at the same time.
  • the cache control apparatus prefetches the data stored in the memory into the cache according to the execution of the prefetch instruction inserted into the program code.
  • the cache control apparatus may fetch data located in a regular pattern periodically in advance by executing one prefetch command.
  • the cache control apparatus may monitor data buses and program counters and use the information for prefetching.
  • the cache control apparatus may execute a prefetch instruction inserted into the program code based on the input parameter stored in the prefetch table.
  • the method may further include obtaining a memory address of the data to be fetched in advance by adding the difference value with the base memory address.
  • the basic memory address may be a memory address obtained by monitoring the data bus, or a memory address of the last fetched data. It is also to be understood that the data bus can be monitored or the last fetched memory address can be managed separately to obtain the base memory address.
  • the prefetch method according to an embodiment of the present invention may be embodied as computer readable codes on a computer readable recording medium.
  • the computer-readable recording medium may include program instructions, data files, data structures, etc. alone or in combination, and includes all kinds of recording devices in which data that can be read by a computer system is stored.
  • Examples of computer-readable recording media include optical media such as magnetic media, such as hard disks, floppy disks, and magnetic tape, compact disk read only memory (CD-ROM), and digital video disks (DVD).
  • Program commands such as Magneto-Optical Media (ROM), ROM (Read Only Memory), RAM (Random Access Memory), flash memory, etc.
  • Hardware devices specifically configured to store and perform.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

본 발명은 프리페치에 관한 것으로 프로그램 코드의 메모리 접근 패턴을 분석하고, 접근 패턴을 분석을 인코딩하여 생성된 프리페치 명령어를 프로그램 코드에 삽입하여, 프로그램 코드에 삽입된 프리페치 명령어가 실행되면, 캐시에 데이터를 미리 인출하는 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법을 제공함으로써, 프리페치 효율을 최대화한다.

Description

프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법
본 발명은 캐시의 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법과 관련된다.
일반적인 컴퓨터 구조에서 메모리 인출 명령은 프로세서의 사이클(Cycle)로 수백에서 수천 사이클이 소요됨으로 프로세서의 고속 처리를 방해하는 주요인이다.
이러한 문제점을 보완하기 위하여 메모리와 프로세서와의 사이에 고속 버퍼 메모리인 캐시(Cache)를 둔다. 캐시는 접근하는 데이터나 명령어를 저장하여 메모리 접근 빈도를 줄여 프로세서의 고속처리를 지원한다. 캐시는 메모리 용량(Memory Capacity)은 적지만 메모리에 비해 고속으로 할 수 있는 장점이 있으나, 프로세서의 크기, 전력, 비용 상의 제약으로 큰 캐시를 사용하는 것에 제약사항이 크다.
따라서, 적은 용량의 캐시를 효율적으로 사용하기 위하여 위하여 프로세서가 프로그램을 처리함에 있어서 필요한 데이터, 또는 명령어가 캐시에서 발견될 확률의 최대화하여 캐시의 데이터 부제(Cache Miss)로 인한 지연(Latency)을 최소화 할 필요가 있다.
즉, 캐시의 히트률(Hit Ratio)를 최대화 할 필요가 있다. 이를 위해 캐시에는 일반적으로 프리페치(Prefetching)이 적용된다. 여기서, 프로페치는 프로세서에서 필요한 데이터, 또는 명령어를 예측하여 미리 캐시에 인출하여 지연 없이 프로세서가 프로그램을 처리할 수 있게 하는 것을 말한다.
이러한 프리페치를 위하여 메모리 주소의 집약성(Locality)을 사용할 수 있다. 집약성은 일정시간 동안 동일한 데이터가 연속적으로 사용되는 시간적 집약성(Temporal Locality)과 사용중인 데이터 주소와 인정한 주소에 데이터가 사용되는 공간적 집약성(Spatial Locality)으로 나눌 수 있다. 다만, 데이터의 시간적 집약성과 공간적 집약성이 약한 경우 여전히 지연이 발생할 수 있다.
프로파일링을 통해 메모리를 접근 패턴을 분석하여 하나의 명령어로 인코딩하고 예측 테이블을 생성하여 프리페치를 수행하는 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법을 제공한다.
본 발명에 일 양상에 따른 캐시 제어 장치는 프로그램 코드의 메모리 접근 패턴을 분석하는 패턴 분석 모듈과, 분석된 메모리 접근 패턴을 인코딩(Encoding)하여 프리페치(Prefetch) 명령어 생성하고, 프로그램 코드에 프리페치 명령어를 삽입하는 코드 변환 모듈과, 프로그램 코드에 삽입된 프리페치 명령어가 실행되면, 캐시에 데이터를 미리 인출하는 프리페치 모듈을 포함한다.
아울러, 캐시 제어 장치는 프로그램 코드에 삽입된 명령어의 실행으로, 동시에 사용되는 복수 개의 데이터가 모두 캐시에 미리 인출될 수 있도록, 동시에 사용되는 복수 개의 데이터를 하나의 구조체로 변환하는 최적화 모듈을 더 포함할 수 있다.
또한, 캐시 제어 장치는 프리페치 명령어의 입력 파라미터를 저장하고 있는 프리페치 테이블을 더 포함하고, 프리페치 모듈은 입력 파라미터를 기반으로 프로그램 코드에 삽입된 프리페치 명령어를 실행할 수 있다.
여기서, 프리페치 모듈은 프로그램 코드의 프리페치 명령어가 실행되면, 주기적으로 정형화된 패턴에 위치한 데이터를 미리 인출할 수 있다.
또한, 패턴 분석 모듈은 프로그램을 컴파일링(Compiling)하여 이진 코드로 변환하고, 변환된 이진 코드의 프로파일링(Profiling)을 통해 접근 패턴을 분석할 수 있다.
한편, 프리페치 명령어는 다양한 메모리 접근 패턴을 구별하기 위한 식별자(ID), 데이터 인출 시점을 결정하기 위한 프로그램 카운터(Program Counter, PC), 인출되어야 할 데이터의 메모리 주소, 인출될 데이터 블록의 개수 중 하나 이상을 입력 파라미터로 할 수 있다.
또한, 프로그램 코드의 프리페치 명령어가 기본 메모리 주소와 인출될 데이터간 거리 값을 입력 파리미터로 하는 경우, 프리페치 모듈은 기본 메모리 주소와 거리 값을 더하여 미리 인출될 데이터가 저장된 메모리 주소를 결정할 수 있으며, 이를 위해 프리페치 모듈은 데이터 버스를 모니터링하여 기본 메모리 주소를 획득할 수 있다.
한편, 블뷰(VLIW, Very Long Instruction Word)의 빈 슬롯을 이용하여 프로그램 코드의 프리페치 명령어를 실행하는 것을 특징으로 하는 하는 캐시 제어 장치.
본 발명의 일 양상에 다른 프리페치 방법은 프로그램 코드의 메모리 접근 패턴을 분석하는 단계와, 분석된 메모리 접근 패턴을 인코딩(Encoding)하여 프리페치(Prefetch) 명령어를 생성하는 단계와, 생성된 프리페치 명령어를 프로그램 코드에 삽입하는 단계와 프로그램 코드에 삽입된 프리페치 명령어의 실행에 따라 캐시에 데이터를 미리 인출하는 단계를 포함한다.
프리페치 방법은 프로그램 코드에 삽입된 프리페치 명령어의 실행으로 동시에 사용되는 복수 개의 데이터가 모두 캐시에서 미리 인출될 수 있도록, 동시에 사용되는 복수 개의 데이터를 하나의 구조체로 변환하는 단계를 더 포함할 수 있다.
또한, 프리페치 방법은 프리페치 명령어를 생성하는 단계는 프리페치 명령어의 입력 파라미터를 저장하고 있는 프리페치 테이블을 생성하는 단계를 더 포함하고, 데이터를 미리 인출하는 단계는 입력 파라미터를 기반으로 프로그램 코드에 삽입된 프리페치 명령어를 실행할 수 있다.
캐시에 데이터를 미리 인출하는 단계는 프리페치 명령어의 실행에 따라 주기적으로 정형화된 패턴에 위치한 데이터를 미리 인출할 수 있다.
메모리 접근 패턴을 분석하는 단계는 프로그램을 컴파일링(compiling)하여 이진 코드로 변환하고, 변환된 이진 코드의 프로파일링(Profiling)을 통해 접근 패턴을 분석할 수 있다.
프로그램 코드의 프리페치 명령어가 기본 메모리 주소와 인출될 데이터간 거리 값을 입력 파리미터로 하는 경우, 캐시에 데이터를 미리 인출하는 단계는 기본 메모리 주소와 거리 값을 더하여 미리 인출될 데이터가 저장된 메모리 주소를 결정할 수 있다. 이때, 캐시에 데이터를 미리 인출하는 단계는 데이터 버스를 모니터링하여 기본 메모리 주소를 획득할 수 있다.
캐시에 데이터를 미리 인출하는 단계는 프로그램 카운터(Program Counter, PC)를 모니터링하여 데이터를 인출하는 시점을 결정할 수 있다.
상기의 실시예에 따르면, 캐시의 프리페치를 통해 효율적인 캐시의 이용을 도모하고, 캐시 미스로 인한 지연을 최소화할 수 있다.
아울러, 메모리 접근 패턴을 분석하고, 분석된 접근 패턴을 몇 가지 입력 파라미터를 가진 명령어로 인코딩하여 구현함으로써, 프리페치를 위한 명령어 라인 수와 하드웨어 리소스 측면에서 이익을 얻을 수 있다.
또한, 다양한 메모리 접근 패턴을 구분하여 프리페치를 수행함으로써, 다양한 메모리 접근 패턴에 있어서도 프리페치가 가능하게 하며, 한번의 접근으로 복수 개의 데이터를 로딩할 수 있도록 메모리를 재구성함으로써, 프리페치 효율을 최대화할 수 있다.
도 1는 프로그램 코드의 다양한 메모리 접근 패턴을 설명하기 위한 도면이다.
도 2은 본 캐시 제어 장치의 구성의 일례를 설명하기 위한 블록도이다.
도 3은 패턴 분석 모듈의 메모리 접근 패턴을 분석의 일례를 설명하기 위한 소스 코드이다.
도 4는 최적화 모듈의 데이터 구조의 변경의 일례를 설명하기 위한 메모리 도면이다.
도 5는 코드 변환 모듈의 프로그램 코드 변환 일례를 설명하기 위한 소스 코드이다.
도 6은 일 실시예에 따른 프리페치 방법을 설명하기 위한 순서도이다.
전술한, 그리고 추가적인 발명의 양상들은 후술하는 실시예들을 통해 명백해질 것이다. 본 명세서에 서 사용되는 용어들은 실시예에서의 기능을 고려하여 선택된 용어들로서, 그 용어의 의미는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 후술하는 실시예들에서 사용된 용어의 의미는, 본 명세서에 구체적으로 정의된 경우에는 그 정의에 따르며, 구체적인 정의가 없는 경우는 통상의 기술자들이 일반적으로 인식하는 의미로 해석되어야 할 것이다.
아울러, 본 명세서에서 선택적으로 기재된 양상이나 선택적으로 기재된 실시예의 구성들은 비록 도면에서 단일의 통합된 구성으로 도시되었다 하더라도 달리 기재가 없는 한 통상의 기술자에게 기술적으로 모순인 것이 명백하지 않다면 상호간에 자유롭게 조합될 수 있는 것으로 이해하여야 한다.
도 1는 프로그램 코드의 다양한 메모리 접근 패턴을 설명하기 위한 도면이다.
도 1를 참조하면, 프로그램 코드의 실행에 필요한 데이터는 다양한 구조로 메모리에 저장되어 있을 수 있다. 이러한 데이터의 저장 구조에 따라 프로그램 코드는 다양한 메모리 접근 패턴을 가지게 된다.
예를 들어, 도 1(a)(c)에 도시된 것과 같이 프로그램 코드에 실행에 필요한 각 데이터가 하나의 메모리 블록 크기로 순서대로 입력되어 있는 경우, 프로그램 코드는 선형(Linear) 메모리 접근 패턴을 가지게 된다. 아울러, 도 1(b)(d)에 도시된 것과 같이 프로그램 코드의 실행에 필요한 각 데이터가 몇 개의 메모리 블록 크기로 순서대로 입력되어 있는 경우는, 프로그램 코드는 뭉쳐진 선형(Linear by Chunk) 메모리 접근 패턴을 가지게 된다.
아울러, 도 1(e)에 도시된 것과 같이 프로그램 코드에 실행에 필요한 각 데이터가 하나의 메모리 블록 크기로 일정한 간격으로 입력되어 있는 경우, 프로그램 코드는 스트라이디드형(strided) 메모리 접근 패턴을 가지게 된다. 아울러, 도 2(f)에 도시된 것과 같이 프로그램 코드의 실행에 필요한 각 데이터가 몇 개의 메모리 블록 크기로 일정한 간격으로 입력되어 있는 경우는, 프로그램 코드는 뭉쳐진 스트라이디드(strided by chunk) 형태의 메모리 접근 패턴을 가지게 된다.
또한, 1(g)에 도시된 것과 같이 프로그램 실행에 필요한 데이터가 규칙성 없이(random)하게 배치되어 있을 수도 있다.
도 2은 본 캐시 제어 장치의 구성의 일례를 설명하기 위한 블록도이다.
일 실시예에 따른 캐시 제어 장치(400)는 프로세서(100)가 프로그램 코드를 지연 없이 처리할 수 있도록 프로그램의 메모리 접근 패턴을 분석하고, 분석된 메모리 접근 패턴(도 1참조)을 기반으로 인코딩된 프리페치(Prefetch) 명령어를 생성하고, 생성된 프리페치 명령어 실행에 따라 캐시(200)에 데이터를 미리 인출한다.
도 2을 참조하면, 캐시 제어 장치(400)는 패턴 분석 모듈(410), 최적화 모듈(430), 코드 변환 모듈(450), 프리페치 모듈(470), 프리페치 테이블(490)을 포함한다.
패턴 분석 모듈(410)은 프로그램 코드의 정형화된 메모리 접근 패턴을 분석한다. 더 구체적으로, 패턴 분석 모듈(410)은 프로그램을 코드를 컴파일링(Compiling)하여 이진 코드로 변환하고, 변환된 이진 코드를 프로파일링(Profiling)하여 메모리 접근 패턴을 분석한다. 여기서, 프로파일링은 동적 프로그램 분석의 한 형태로 시뮬레이션(Simulation)을 통해 프로그램 코드를 계측, 분석하는 것을 말한다.
최적화 모듈(430)은 메모리(300)에 산재되어 저장된 복수 개의 데이터를 한번의 프리페치 명령어 실행으로 미리 인출될 수 있게 메모리(300)에 저장된 데이터의 구조를 변경한다. 프로그램 코드가 실행되기 위해서는 복수 개의 데이터가 동시에 사용되는 경우가 있다. 이때, 동시에 사용되는 복수 개의 데이터가 메모리(300) 여러 곳에 산재되어 있다면, 프리페치 모듈(470)은 복수 개의 데이터 각각을 미리 인출하기 위해 여러 번 프리페치 명령어를 실행하여야 한다. 이러한 프리페치로 인한 오버헤드를 줄이기 위하여 최적화 모듈(430)은 한번의 프리페치 명령어 실행으로 동시에 사용되는 복수 개의 데이터를 미리 인출할 수 있도록 데이터의 구조를 변경한다. 예를 들어, 최적화 모듈(430)은 한번의 프리페치 명령어의 실행으로 복수 개의 데이터를 한번에 인출할 수 있게 하기 위해 메모리(300)의 저장된 복수 개의 데이터의 하나의 구조체로 변경할 수 있다. 또한, 최적화 모듈(430)은 변경된 구조체를 이용하여 프로그램 코드의 실행이 가능하도록 프로그램 코드를 수정할 수 있다. 한편, 최적화 모듈(430)은 패턴 분석 모듈(410)에 의해 분석된 메모리 접근 패턴의 정보를 이용하여, 프리페치 명령어를 여러 번 실행하여야 하는지 판단할 수 있다.
코드 변환 모듈(450)은 패턴 분석 모듈(410)에 의해 분석된 접근 패턴을 인코딩(Encoding)하여 생성된 프리페치 명령어를 기반으로 프로그램 코드를 변경한다. 즉, 코드 변환 모듈(450)은 프로그램 코드에 프리페치 명령어를 삽입한다. 여기서, 프리페치 명령어는 한번의 실행으로 정형화된 패턴에 따라 데이터가 미리 인출될 수 있도록 한다. 프리페치 명령어는 프리페치 명령어는 다양한 메모리 접근 패턴을 구별하기 위한 식별자(ID), 데이터 인출 시점을 결정하기 위한 프로그램 카운터(Program Counter, PC), 인출되어야 할 데이터의 메모리 주소, 인출될 데이터 블록의 개수 등과 같이 데이터를 미리 인출하기 위해 필요한 다양한 데이터를 입력 파라미터(Parameter)로 가질 수 있다.
아울러, 코드 변환 모듈(450)은 프리페치 명령어의 실행을 위해 필요한 입력 파라미터를 프리페치 테이블(490)에 저장할 수 있다.
프리페치 모듈(470)은 코드 변환 모듈(450)에 의해 프로그램 코드에 삽입된 프리페치 명령어가 실행되면, 캐시(200)에 데이터를 미리 인출한다. 프리페치 모니터링된 프로그램 카운터 값을 기반으로 프리페치 모듈(470)은 데이터를 미리 인출한 시점을 결정할 수 있다. 또한, 프리페치 모듈(470)은 프리페치 명령어에 실행에 따라 주기적으로 정형화된 패턴에 위치한 데이터를 미리 인출할 수 있다. 이때, 프리페치 모듈(470)은 주기적인 데이터 인출을 위해 프로그램 카운터를 모니터링 할 수 있다.
프리페치 모듈(470)은 프리페치 테이블(490)에 저장된 입력 파라미터를 기반으로 프리페치 명령어를 실행하여 데이터를 미리 인출할 수 있다. 또한, 프리페치 테이블(490)에 저장된 메모리 주소가 기본 메모리 주소와 차이 값인 경우, 프리페치 모듈(470)은 기본 메모리 주소(Base Memory Address)와 테이블에 저장된 차이 값을 더하여 인출되어야 할 메모리 주소를 결정한다. 여기서, 기본 메모리 주소는 데이터 버스를 모니터링하여 획득한 메모리 주소, 또는 가장 마지막에 인출된 데이터의 메모리 주소 등이 될 수 있다. 프리페치 모듈(470)은 기본 메모리 주소와 차이 값만을 파라미터로 가진 프리페치 명령어를 이용하여 데이터를 미리 인출할 수 있게 됨으로 프리페치를 위한 오버헤드를 줄일 수 있게 된다.
프리페치 테이블(490)은 코드 변환 모듈(450)로부터 프리페치 명령어의 입력 파라미터로 사용되는 여러 인자를 제공받아 저장하고, 프리페치 모듈(470)에 저장된 입력 파라미터를 제공한다. 더 구체적으로, 프리페치 테이블(490)은 다양한 메모리 접근 패턴을 구별하기 위한 식별자, 데이터 인출 시점을 결정하기 위한 프로그램 카운터, 인출되어야 할 데이터의 메모리 주소, 인출될 데이터 블록의 크기 등의 정보를 포함할 수 있다.
프리페치 테이블(490)에 저장되는 메모리 주소는 물리적인 메모리 주소뿐만 아니라 기본 메모리 주소와 데이터가 존재하는 메모리 주소의 차이 값만을 저장하고 있을 수 있다. 여기서, 기본 메모리 주소는 마지막으로 인출된 메모리 주소, 데이터 버스를 통해 전송되고 있는 데이터의 메모리 주소 등과 같은 특정한 메모리 주소일 수 있다.
한편, 도 1에서는 설명의 편의를 위하여 캐시 제어 장치(400)가 프로세서(100)와 별도로 위치하는 것으로 도시하였으나, 캐시 제어 장치(400)와 프로세서(100)는 하나의 칩 내에 구비될 수 있으며, 프로세서의 일부 엘리먼트가 캐시 제어 장치(400)로 동작할 수 있다. 아울러, 메모리(300)는 일반적인 메모리에 국한 되지 않고, L2 캐시일 수 있음을 이해하여야 한다.
이하, 캐시 제어 장치를 구성하는 각 구성요소에 대하여 보다 상세하게 설명한다.
도 3은 패턴 분석 모듈의 메모리 접근 패턴을 분석의 일례를 설명하기 위한 소스 코드이다.
도 2를 참조하면, 데이터 저장 구조에 따라 프로그램 코드는 다양한 메모리 접근 패턴을 가지게 된다(도 1참조). 이러한 다양한 접근 패턴은 패턴 분석 모듈(410)에 의하여 분석된다.
도 2, 3을 참조하면, 도 3(a)는 프로그램에 의하여 접근되는 되는 메모리 접근 정보를 변수(tracer)에 저장하기 위한 소스 코드이다. 패턴 분석 모듈(410)은 도 3(a)의 소스 코드를 실행하여 메모리 접근 정보를 변수에 저장할 수 있다. 이때, 메모리 접근 정보는 프로그램 실행을 위해 접근이 필요한 메모리 주소뿐만 아니라, 메모리 인출 시점에 관한 정보, 하나의 데이터가 저장된 메모리 필드 수(즉, 각 데이터의 크기) 등 메모리 접근 패턴에 필요한 정보를 의미한다.
도 3(b)는 변수에(tracer) 저장된 메모리 접근 정보로부터 메모리 접근 패턴을 분석하기 위한 소스 코드이다. 패턴 분석 모듈(410)은 도 3(a)의 소스 코드를 실행하여 생성된 변수(tracer)를 기반으로 메모리 접근 패턴을 분석한다. 더 구체적으로, 패턴 분석 모듈(410)은 변수에 저장된 복수 개의 메모리 접근 정보를 순회하면서, 각 데이터를 저장하고 있는 메모리 필드 간의 간격(tracer->GetMemAddr(int i))을 계산한다. 이후, 패턴 분석 모듈(410)은 계산된 메모리 필드 간의 간격 및 각 데이터가 저장된 메모리 필드의 수(데이터의 크기)를 기반으로 메모리 접근 패턴을 분석하게 된다.
도 1을 참조하여 예를 들면, 패턴 분석 모듈(410)은 계산된 메모리 필드의 간격이 1이고, 각 데이터가 1개의 메모리 필드에 저장되어 있는 경우 선형(Linear) 패턴으로, 계산된 메모리 필드의 간격이 3이고, 각 데이터가 3개의 메모리 필드에 걸쳐 저장되어 있는 경우 뭉쳐진 선형(Linear by Chunk) 패턴으로, 계산된 메모리 필드의 간격이 5이고, 각 데이터가 1개의 메모리 필드에 저장되어 있는 경우 스트라이디드형(strided) 패턴으로 분석할 수 있다.
한편, 도 3의 소스 코드는 메모리 접근 패턴을 분석하기 위한 일례를 설명하기 위한 것으로, 도 3의 소스 코드에 한정하여 해석해서는 안된다.
도 4는 최적화 모듈의 데이터 구조의 변경의 일례를 설명하기 위한 메모리 도면이다.
도 4(a)는 최적화 모듈에 의하여 변경되기 전 메모리에 저장된 데이터 구조를 나타낸 도면이고, 도 4(b)는 최적화 모듈에 의하여 변경된 후 메모리에 저장된 데이터 구조를 나타낸 도면이다.
<표 1>
int a[NUM_DATA];
int b[NUM_DATA];
int c[NUM_DATA];
int d[NUM_DATA];
For(i=0;i<1000;++i){
......
d[i] = add(a[i],b[i],c[i]);
......
}
상기 [표 1]은 최적화 모듈에 의하여 변경되기 전 프로그램 코드이다.
표 1 및 도 1, 4(a) 참조하면, 캐시 제어 장치는 한번의 덧셈(add) 실행을 위하여 위하여 동시에 사용되는 3개의 데이터(a[i], b[i], c[i])를 미리 인출하여야 한다. 즉, 캐시 제어 장치는 매 루프의 순환마다 3번의 프리페치 명령어를 산재되어 있는 데이터를 미리 인출하여야 한다. 이와 같은 오버헤드를 줄이기 위하여 최적화 모듈(430)은 한번의 프리페치 명령어 실행으로 동시에 사용되는 복수 개의 데이터를 미리 인출할 수 있게 메모리에 저장된 데이터의 구조 및 프로그램 코드를 변경한다.
<표 2>
struck{
int a;
int b;
int c;
} ABC;
ABC abc[NUM_DATA];
For(i=0;i<1000;++i){
......
d[i] = add(abc[i].a, abc[i].b, abc[i].c);
......
}
상기 [표 2]은 최적화 모듈에 의하여 변경된 후 프로그램 코드이다.
표 2 및 도 4(b)를 참조하면, 최적화 모듈(430)은 한번의 명령어 실행으로 매 루프마다 동시에 사용되는 데이터를 한번에 인출할 수 있게 데이터 구조 및 프로그램 코드를 변경한다. 예를 들어, 최적화 모듈(430)은 3 개의 배열(a[i], b[i], c[i])을 하나의 구조체 배열(Array of Structure)로 변경한다. 즉, 최적화 모듈(430)은 동시에 사용되는 데이터(예를 들어, 첫번째 루프 순환에서 a[0], b[0], c[0])를 하나의 구조체(예를 들어, ABC[0])로 변경한다. 따라서, 캐시 제어 장치는 한번의 프리페치 명령어 실행으로 하나의 구조체 ABC[i]에 미리 인출한다. 따라서, 동시에 사용되는 복수 개의 데이터를 한번의 프리페치 명령어의 실행으로 모두 미리 인출할 수 있다. 아울러, 최적화 모듈(430)은 변경된 데이터 저장 구조를 반영하여 표 2와 같이 프로그램 코드를 수정할 수 있음을 이해하여야 한다.
도 5는 코드 변환 모듈의 프로그램 코드 변환 일례를 설명하기 위한 소스 코드이다.
도 2, 5를 참조하면, 코드 변환 모듈(450)은 분석된 접근 패턴에 따라 프리페치 명령어를 생성하고, 생성된 프리페치 명령어를 기반으로 프로그램 코드를 변환할 수 있다. 예를 들어 도 5를 참조하면, 프리페칭 명령어(map)는 다양한 접근 패턴을 구별하기 위한 식별자(1), 메모리에 저장된 데이터 간 간격(720), 하나의 데이터를 저장하고 있는 메모리 블록의 수(3), 데이터 인출 시기를 결정하기 위한 프로그램 카운터(R[16])을 입력 파라미터로 가질 수 있다.
한편, 도 2을 참조하면, 프리페치 모듈(470)은 코드 변환 모듈(450)에 의해 생성된 프리페치 명령어가 실행되면, 캐시(200)에 데이터를 미리 인출한다. 아울러, 프리페치 모듈(470)은 분석된 접근 패턴이 프로그램 코드가 일정한 주기로 정형화된 메모리 접근 패턴을 가지는 경우, 프리페치 모듈(470)은 한번의 프리페치 명령어의 실행으로 주기적으로 정형화된 패턴에 따라 데이터를 미리 인출할 수 있다. 이와 같이 코드 변환 모듈(450)은 몇 개의 파라미터(Parameter)로 프로그램 코드 수행을 위해 필요한 데이터를 미리 인출할 수 있게 한다. 따라서, 프리페치로 인한 소프트웨어 및 하드웨어의 오버헤드를 감소시킨다.
도 2, 5를 참조하여 예를 들면, 프리페치 명령어(map STRIDED 1 720 3 R[16])가 실행됨에 따라, 프리페치 모듈(470)은 16 프로그램 카운터(PC)에 기본 메모리 주소로부터 720 간격(Offset)에 위치한 3개의 메모리 필드(Size)를 캐시(200)에 프리페치하게 된다. 이때, 프리페치 모듈(470)은 데이터 버스를 모니터링하여 기본 메모리 주소를 얻을 수 있다.
또한, 프리페치 명령어의 접근 식별자(1)가 나태는 도 1(f)에 도시된 것(도 1 참조)과 같은 접근 패턴을 의미한다고 하면, 프리페치 모듈(470)은 매 16 프로그램 카운터마다 기본 메모리 주소로부터 720 간격에 위치한 3개의 메모리를 필드를 캐시(200)에 프리페치할 수 있다. 즉, 메모리(300)의 접근 패턴이 일정한 경우, 프리페치 모듈(470)은 한번의 프리페치 명령어의 실행으로 일정한 주기마다 일정한 패턴에 위치한 데이터를 미리 인출하게 된다.
도 6은 일 실시예에 따른 프리페치 방법을 설명하기 위한 순서도이다.
도 6을 참조하면, S101단계에서 캐시 제어 장치는 프로그램 코드의 메모리 접근 패턴을 분석한다. 이때, 캐시 제어 장치는 프로그램 코드를 컴퓨일링(Compiling)하여 이진 코드로 변환하고, 변환된 이진 코드를 프로파일링(Profiling)하여 메모리 접근 패턴을 분석한다. 예를 들어, 음악, 화상, 영상과 같은 멀티미디어 파일은 대체적으로 정형화된 구조로 저장되어 있다. 따라서, 멀티미디어 파일을 처리하는 프로그램 코드는 정형화된 메모리 접근 패턴을 가지게 된다. 이와 같은 정형화된 메모리 접근 패턴은 도 3에 도시된 것과 같은 소스 코드를 실행하여 분석될 수 있다.
이후, 캐시 제어 장치는 S103 단계에서 분석된 접근 패턴에 따라 프리페치 명령어를 생성한다. 더 구체적으로, 캐시 제어 장치는 S101단계에서 분석된 접근 패턴을 인코딩하여, 프리페치 명령어를 생성한다. 즉, 분석된 접근 패턴이 정형화되어 있는 경우, 프리페치 명령어는 간단한 몇 개의 입력 파라미터를 기반으로 프로그램 코드의 실행에 필요한 데이터가 미리 인출될 수 있도록 인코딩 될 수 있다. 예를 들어 도 5를 참조하면, 프리페칭 명령어(map)는 다양한 접근 패턴을 구별하기 위한 식별자(1), 메모리에 저장된 데이터 간 간격(720), 하나의 데이터를 저장하고 있는 메모리 블록의 수(3), 데이터 인출 시기를 결정하기 위한 프로그램 카운터(R[16])을 입력 파라미터로 가질 수 있다.
아울러, 이때, 캐시 제어 장치는 S103단계에서 프리페치 명령어에 실행에 필요한 다양한 입력 파라미터를 저장한 프리페치 테이블을 생성할 수 있다(미도시). 여기서, 프리페치 테이블은 다양한 메모리 접근 패턴을 구별하기 위한 식별자(ID), 데이터 인출 시점을 결정하기 위한 프로그램 카운터(Program Counter, PC), 인출되어야 할 데이터의 메모리 주소, 인출될 데이터 블록의 개수(데이터의 크기) 등의 정보를 저장할 수 있다(도 2의 440 참조).
이후, S105 단계에서 캐시 제어 장치는 S103 단계에서 생성된 프리페치 명령어를 프로그램 코드에 삽입한다. 프리페치 명령어는 프로그램 코드의 특정 부분에 삽입된다. 이때, 삽입된 프리페치 명령어는 프로그램 코드가 실행될 때, 프로그램 코드의 실행에 필요한 데이터가 미리 캐시에 인출될 수 있도록 하는 라인(위치)에 삽입되어야 한다.
이후, 캐시 제어 장치는 S107 단계에서 메모리에 산재되어 저장된 복수 개의 데이터가 한번에 인출될 수 있도록 데이터 구조를 변경한다. 프로그램 코드의 처리를 위해서는 동시에 복수 개의 데이터가 사용될 수 있다. 캐시 제어 장치는 한번의 프리페치 명령어 실행으로 하나의 데이터만을 미리 인출하수 있다. 따라서, 동시에 복수 개의 데이터가 메모리 여기 저기에 산재되어 있는 경우라면, 캐시 제어 장치는 복수 번의 프리페치 명령어를 수행하여야 한다. 따라서, 프리페치의 효율성을 높이기 위해 캐시 제어 장치는 메모리에 저장된 데이터 구조를 변경하게 된다. 동시에 필요한 복수 개의 데이터를 하나의 구조체로 변경하여 인접한 메모리 셀에 저장함으로써, 캐시 제어 장치는 한번의 명령어 실행으로 동시에 사용되는 복수 개의 데이터를 미리 인출할 수 있도록 한다. 이때, 캐시 제어 장치는 변경된 데이터 저장 구조를 반영하여 프로그램 코드를 변경할 수 있다. 예를 들어 도 4(b)에 도시된 것과 같이 구조체 배열(Array of Structure)형식으로 메모리에 저장된 구조가 변경된 경우, 프로그램 코드의 입력 파라미터는 구조체(ABC[i].a, ABC[i].b, ABC[i].c)를 참조하는 형식으로 변경되어야 한다. 또한, 캐시 제어 장치는 프로그램 코드의 실행에 필요한 데이터의 구조 및 동시 접근 여부를 판단하기 위하여, S101단계에서 분석한 메모리 접근 패턴을 사용할 수 있다.
한편, 도 6에는 S103단계 이후 S107단계가 실행되는 것으로 도시되어 있으나, 각 단계의 순서는 서로 변경될 수 있으며, 각 단계는 동시에 진행될 수도 있음을 이해하여야 한다.
이후, S109 단계에서, 캐시 제어 장치는 프로그램 코드에 삽입된 프리페치 명령어의 실행에 따라 메모리에 저장된 데이터를 캐시에 미리 인출한다. 이때, 캐시 제어 장치는 한번의 프리페치 명령어 실행으로 주기적으로 정형화된 패턴에 위치한 데이터를 미리 인출할 수 있으며, 이를 위해 데이터 버스, 프로그램 카운터 등을 모니터링하여 프리페칭을 위한 정보로 사용할 수 있다. 또한, 캐시 제어 장치는 프리페치 테이블에 저장된 입력 파라미터를 기반으로 프로그램 코드에 삽입된 프리페치 명령어를 실행할 수 있다.
한편, 프로그램 코드의 프리페치 명령어가 기본 메모리 주소와 인출될 데이터간 거리 값을 입력 파리미터로 하는 경우에는, 기본 메모리 주소와 차이 값을 더하여 미리 인출할 데이터의 메모리 주소를 구하는 단계를 더 포함할 수 있다(미도시). 여기서, 기본 메모리 주소는 데이터 버스를 모니터링하여 획득한 메모리 주소, 또는 가장 마지막에 인출된 데이터의 메모리 주소 등이 될 수 있다. 또한, 기본 메모리 주소를 얻기 위하여 데이터 버스를 모니터링하거나 가장 마지막에 인출된 메모리 주소 등을 별도로 관리할 수 있음을 이해하여야 한다
본 발명의 실시예에 따른 프리페치 방법은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있으며, 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 컴퓨터가 읽을 수 있는 기록매체의 예로는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(Magnetic Media), CD-ROM(Compact Disk Read Only Memory), DVD(Digital Video Disk)와 같은 광기록 매체(Optical Media), 플롭티컬 디스크(Floptical Disk)와 같은 자기-광 매체(Magneto??Optical Media) 및 롬(ROM, Read Only Memory), 램(RAM, Random Access Memory), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함한다.
이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 특성에서 벗어나지 않는 범위 내에서 다양한 수정, 변경 및 치환이 가능할 것이다. 따라서, 본 발명에 개시된 실시예 및 첨부된 도면들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예 및 첨부된 도면에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.

Claims (17)

  1. 프로그램 코드의 메모리 접근 패턴을 분석하는 패턴 분석 모듈;
    상기 분석된 메모리 접근 패턴을 인코딩(Encoding)하여 프리페치(Prefetch) 명령어 생성하고, 상기 프로그램 코드에 상기 프리페치 명령어를 삽입하는 코드 변환 모듈; 및
    상기 프로그램 코드에 삽입된 프리페치 명령어가 실행되면, 캐시에 데이터를 미리 인출하는 프리페치 모듈;
    을 포함하는 캐시 제어 장치.
  2. 제1항에 있어서,
    상기 프로그램 코드에 삽입된 명령어의 실행으로, 동시에 사용되는 복수 개의 데이터가 모두 캐시에 미리 인출될 수 있도록, 상기 동시에 사용되는 복수 개의 데이터를 하나의 구조체로 변환하는 최적화 모듈을 더 포함하는 캐시 제어 장치.
  3. 제1항에 있어서,
    상기 프리페치 명령어의 입력 파라미터를 저장하고 있는 프리페치 테이블을 더 포함하고,
    상기 프리페치 모듈은 상기 입력 파라미터를 기반으로 상기 프로그램 코드에 삽입된 프리페치 명령어를 실행하는 것을 특징으로 하는 캐시 제어 장치.
  4. 제1항에 있어서,
    상기 프리페치 모듈은 상기 프로그램 코드의 프리페치 명령어가 실행되면, 주기적으로 정형화된 패턴에 위치한 데이터를 미리 인출하는 것을 특징으로 하는 캐시 제어 장치.
  5. 제1항에 있어서,
    상기 패턴 분석 모듈은 상기 프로그램을 컴파일링(compiling)하여 이진 코드로 변환하고, 상기 변환된 이진 코드의 프로파일링(Profiling)을 통해 상기 접근 패턴을 분석하는 것을 특징으로 하는 캐시 제어 장치.
  6. 제1항에 있어서,
    상기 프리페치 명령어는 다양한 메모리 접근 패턴을 구별하기 위한 식별자(ID), 데이터 인출 시점을 결정하기 위한 프로그램 카운터(Program Counter, PC), 인출되어야 할 데이터의 메모리 주소, 인출될 데이터 블록의 개수 중 하나 이상을 입력 파라미터로 하는 것을 특징으로 하는 캐시 제어 장치.
  7. 제1항에 있어서,
    상기 프로그램 코드의 프리페치 명령어가 기본 메모리 주소와 인출될 데이터간 거리 값을 입력 파리미터로 하는 경우,
    상기 프리페치 모듈은 상기 기본 메모리 주소와 상기 거리 값을 더하여 상기 미리 인출될 데이터가 저장된 메모리 주소를 결정하는 것을 특징으로 하는 프리페치 캐시 제어 장치.
  8. 제7항에 있어서,
    상기 프리페치 모듈은 데이터 버스를 모니터링하여 상기 기본 메모리 주소를 획득하는 것을 특징으로 하는 캐시 제어 장치.
  9. 제1항에 있어서,
    블뷰(VLIW, Very Long Instruction Word)의 빈 슬롯을 이용하여 상기 프로그램 코드의 프리페치 명령어를 실행하는 것을 특징으로 하는 하는 캐시 제어 장치.
  10. 프로그램 코드의 메모리 접근 패턴을 분석하는 단계;
    상기 분석된 메모리 접근 패턴을 인코딩(Encoding)하여 프리페치(Prefetch) 명령어를 생성하는 단계;
    상기 생성된 프리페치 명령어를 상기 프로그램 코드에 삽입하는 단계; 및
    상기 프로그램 코드에 삽입된 프리페치 명령어의 실행에 따라 캐시에 데이터를 미리 인출하는 단계;
    를 포함하는 프리페치 방법.
  11. 제9항에 있어서,
    상기 프로그램 코드에 삽입된 프리페치 명령어의 실행으로 동시에 사용되는 복수 개의 데이터가 모두 캐시에서 미리 인출될 수 있도록, 상기 동시에 사용되는 복수 개의 데이터를 하나의 구조체로 변환하는 단계를 더 포함하는 것을 특징으로 하는 프리페치 방법.
  12. 제9항에 있어서,
    상기 프리페치 명령어를 생성하는 단계는 상기 프리페치 명령어의 입력 파라미터를 저장하고 있는 프리페치 테이블을 생성하는 단계를 더 포함하고,
    상기 데이터를 미리 인출하는 단계는 상기 입력 파라미터를 기반으로 상기 프로그램 코드에 삽입된 프리페치 명령어를 실행하는 것을 특징으로 하는 프리페치 방법.
  13. 제9항에 있어서,
    상기 캐시에 데이터를 미리 인출하는 단계는 상기 프리페치 명령어의 실행에 따라 주기적으로 정형화된 패턴에 위치한 데이터를 미리 인출하는 것을 특징으로 하는 프리페치 방법.
  14. 제9항에 있어서,
    메모리 접근 패턴을 분석하는 단계는 상기 프로그램을 컴파일링(compiling)하여 이진 코드로 변환하고, 상기 변환된 이진 코드의 프로파일링(Profiling)을 통해 상기 접근 패턴을 분석하는 것을 특징으로 하는 프리페치 방법.
  15. 제9항에 있어서,
    상기 프로그램 코드의 프리페치 명령어가 기본 메모리 주소와 인출될 데이터간 거리 값을 입력 파리미터로 하는 경우,
    상기 캐시에 데이터를 미리 인출하는 단계는 상기 기본 메모리 주소와 상기 거리 값을 더하여 상기 미리 인출될 데이터가 저장된 메모리 주소를 결정하는 것을 특징으로 하는 프리페치 방법.
  16. 제15항에 있어서,
    상기 캐시에 데이터를 미리 인출하는 단계는 데이터 버스를 모니터링하여 상기 기본 메모리 주소를 획득하는 것을 특징 하는 프리페치 방법.
  17. 제9항에 있어서,
    상기 캐시에 데이터를 미리 인출하는 단계는 프로그램 카운터(Program Counter, PC)를 모니터링하여 상기 데이터를 인출하는 시점을 결정하는 것을 특징으로 하는 프리페치 방법.
PCT/KR2014/003955 2013-05-03 2014-05-02 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법 WO2014178683A1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US14/931,019 US9886384B2 (en) 2013-05-03 2015-11-03 Cache control device for prefetching using pattern analysis processor and prefetch instruction and prefetching method using cache control device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2013-0050250 2013-05-03
KR1020130050250A KR102070136B1 (ko) 2013-05-03 2013-05-03 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US14/931,019 Continuation US9886384B2 (en) 2013-05-03 2015-11-03 Cache control device for prefetching using pattern analysis processor and prefetch instruction and prefetching method using cache control device

Publications (1)

Publication Number Publication Date
WO2014178683A1 true WO2014178683A1 (ko) 2014-11-06

Family

ID=51843719

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/KR2014/003955 WO2014178683A1 (ko) 2013-05-03 2014-05-02 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법

Country Status (3)

Country Link
US (1) US9886384B2 (ko)
KR (1) KR102070136B1 (ko)
WO (1) WO2014178683A1 (ko)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200039202A (ko) * 2018-10-05 2020-04-16 성균관대학교산학협력단 Gpu 커널 정적 분석을 통해 gpu 프리패치를 수행하기 위한 gpu 메모리 제어장치 및 제어방법
CN115098169A (zh) * 2022-06-24 2022-09-23 海光信息技术股份有限公司 基于容量共享的调取指令的方法及装置

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10509769B1 (en) * 2014-06-12 2019-12-17 EMC IP Holding Company LLC Method to efficiently track I/O access history
CN110580227B (zh) * 2018-06-07 2024-04-12 北京忆恒创源科技股份有限公司 自适应nvm命令生成方法与装置
CN109358851B (zh) * 2018-07-19 2021-08-31 平安科技(深圳)有限公司 图表组件的创建方法、装置及计算机可读存储介质
US11281589B2 (en) 2018-08-30 2022-03-22 Micron Technology, Inc. Asynchronous forward caching memory systems and methods
KR102693213B1 (ko) 2018-11-30 2024-08-09 에스케이하이닉스 주식회사 메모리 시스템
US11544063B2 (en) 2018-11-21 2023-01-03 SK Hynix Inc. Memory system and data processing system including the same
KR102679649B1 (ko) * 2018-11-30 2024-07-01 에스케이하이닉스 주식회사 메모리 시스템
KR102684940B1 (ko) 2018-11-21 2024-07-17 에스케이하이닉스 주식회사 데이터 처리 시스템
US11169737B2 (en) 2019-08-13 2021-11-09 Micron Technology, Inc. Speculation in memory
WO2022100845A1 (en) * 2020-11-13 2022-05-19 Huawei Technologies Co., Ltd. Method and computing arrangement for loading data into data cache from data memory
US11726699B2 (en) * 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
US11797307B2 (en) * 2021-06-23 2023-10-24 Arm Limited Range prefetch instruction
KR102550499B1 (ko) * 2022-12-15 2023-07-03 주식회사 클라우다이크 폴더 트리의 동적 프리페치 방법 및 이를 수행하기 위한 클라우드 서버

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040038548A (ko) * 2002-11-01 2004-05-08 삼성전자주식회사 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법
US20050262307A1 (en) * 2004-05-20 2005-11-24 International Business Machines Corporation Runtime selective control of hardware prefetch mechanism
KR20100005539A (ko) * 2008-07-07 2010-01-15 삼성전자주식회사 캐시 메모리 시스템 및 캐시의 프리페칭 방법
US20100268893A1 (en) * 2009-04-20 2010-10-21 Luttrell Mark A Data Prefetcher that Adjusts Prefetch Stream Length Based on Confidence
US20100268892A1 (en) * 2009-04-20 2010-10-21 Luttrell Mark A Data Prefetcher

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7272703B2 (en) * 1997-08-01 2007-09-18 Micron Technology, Inc. Program controlled embedded-DRAM-DSP architecture and methods
US8489861B2 (en) * 1997-12-23 2013-07-16 Round Rock Research, Llc Split embedded DRAM processor
US8095920B2 (en) 2002-09-17 2012-01-10 Intel Corporation Post-pass binary adaptation for software-based speculative precomputation
US20050198439A1 (en) * 2004-03-04 2005-09-08 Fredy Lange Cache memory prefetcher
US7669194B2 (en) 2004-08-26 2010-02-23 International Business Machines Corporation Fine-grained software-directed data prefetching using integrated high-level and low-level code analysis optimizations
JP4151977B2 (ja) * 2005-03-16 2008-09-17 インターナショナル・ビジネス・マシーンズ・コーポレーション 先読み装置、先読み方法、および先読みプログラム
US20070101100A1 (en) * 2005-10-28 2007-05-03 Freescale Semiconductor, Inc. System and method for decoupled precomputation prefetching
US7774578B2 (en) 2006-06-07 2010-08-10 Advanced Micro Devices, Inc. Apparatus and method of prefetching data in response to a cache miss
US9798528B2 (en) * 2006-09-13 2017-10-24 International Business Machines Corporation Software solution for cooperative memory-side and processor-side data prefetching
KR101376884B1 (ko) 2007-02-07 2014-03-21 엘지전자 주식회사 프로그램 명령어 프리페치 제어 장치 및 그 방법
JP5094193B2 (ja) * 2007-04-16 2012-12-12 株式会社日立製作所 記憶システム及びその制御方法
JP5237671B2 (ja) 2008-04-08 2013-07-17 ルネサスエレクトロニクス株式会社 データプロセッサ
US7984265B2 (en) 2008-05-16 2011-07-19 Oracle America, Inc. Event address register history buffers for supporting profile-guided and dynamic optimizations
US20110010506A1 (en) 2009-07-10 2011-01-13 Via Technologies, Inc. Data prefetcher with multi-level table for predicting stride patterns
US8621157B2 (en) * 2011-06-13 2013-12-31 Advanced Micro Devices, Inc. Cache prefetching from non-uniform memories
US9026739B2 (en) * 2012-03-07 2015-05-05 Advanced Micro Devices, Inc. Multimode prefetcher
GB2506900A (en) * 2012-10-12 2014-04-16 Ibm Jump positions in recording lists during prefetching
US20140108740A1 (en) * 2012-10-17 2014-04-17 Advanced Micro Devices, Inc. Prefetch throttling
US20140189249A1 (en) * 2012-12-28 2014-07-03 Futurewei Technologies, Inc. Software and Hardware Coordinated Prefetch
US9122613B2 (en) * 2013-03-07 2015-09-01 Arm Limited Prefetching of data and instructions in a data processing apparatus
US20140281232A1 (en) * 2013-03-14 2014-09-18 Hagersten Optimization AB System and Method for Capturing Behaviour Information from a Program and Inserting Software Prefetch Instructions
WO2014143055A1 (en) * 2013-03-15 2014-09-18 Intel Corporation Mechanism for facilitating dynamic and efficient management of translation buffer prefetching in software programs at computing systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040038548A (ko) * 2002-11-01 2004-05-08 삼성전자주식회사 높은 히트율을 갖는 캐쉬 메모리 시스템 및 그의 데이터캐슁 방법
US20050262307A1 (en) * 2004-05-20 2005-11-24 International Business Machines Corporation Runtime selective control of hardware prefetch mechanism
KR20100005539A (ko) * 2008-07-07 2010-01-15 삼성전자주식회사 캐시 메모리 시스템 및 캐시의 프리페칭 방법
US20100268893A1 (en) * 2009-04-20 2010-10-21 Luttrell Mark A Data Prefetcher that Adjusts Prefetch Stream Length Based on Confidence
US20100268892A1 (en) * 2009-04-20 2010-10-21 Luttrell Mark A Data Prefetcher

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200039202A (ko) * 2018-10-05 2020-04-16 성균관대학교산학협력단 Gpu 커널 정적 분석을 통해 gpu 프리패치를 수행하기 위한 gpu 메모리 제어장치 및 제어방법
KR102142498B1 (ko) * 2018-10-05 2020-08-10 성균관대학교산학협력단 Gpu 커널 정적 분석을 통해 gpu 프리패치를 수행하기 위한 gpu 메모리 제어장치 및 제어방법
CN115098169A (zh) * 2022-06-24 2022-09-23 海光信息技术股份有限公司 基于容量共享的调取指令的方法及装置
CN115098169B (zh) * 2022-06-24 2024-03-05 海光信息技术股份有限公司 基于容量共享的调取指令的方法及装置

Also Published As

Publication number Publication date
US9886384B2 (en) 2018-02-06
US20160055089A1 (en) 2016-02-25
KR20140132424A (ko) 2014-11-17
KR102070136B1 (ko) 2020-01-28

Similar Documents

Publication Publication Date Title
WO2014178683A1 (ko) 프리페치를 위한 캐시 제어 장치 및 그 캐시 제어 장치를 이용한 프리페치 방법
Mei et al. Dissecting GPU memory hierarchy through microbenchmarking
WO2017065379A1 (ko) 프로세싱-인-메모리를 이용한 명령어 처리 방법 및 그 장치
WO2012111905A2 (ko) 맵 리듀스를 이용한 분산 메모리 클러스터 제어 장치 및 방법
KR101820223B1 (ko) 모드에 따라 선택적으로 하나 또는 복수의 셋트를 선택하도록 동적으로 구성가능한 멀티 모드 셋트 연관 캐시 메모리
US8949579B2 (en) Ineffective prefetch determination and latency optimization
US9977759B2 (en) Parallel computing apparatus, compiling apparatus, and parallel processing method for enabling access to data in stack area of thread by another thread
WO2012033237A1 (ko) 시스템 테스트 방법
TW201631476A (zh) 根據位址標籤位元的動態快取記憶體置換路選擇
TW201636852A (zh) 取決於模式而可動態配置以選擇分配至全部或是一個組的多模式組相聯快取記憶體
CN101611380A (zh) 推测性吞吐量计算
KR20180105169A (ko) 어드레스 변환 대기시간의 측정
KR101109210B1 (ko) 데이터 액세스 위반을 검출하기 위한 방법 및 장치
CN103294588A (zh) 内存检测系统及方法
EP3144814B1 (en) Method and apparatus for generating a profile of a target program
Tang et al. A data skew oriented reduce placement algorithm based on sampling
WO2022107994A1 (ko) 빅데이터 증강분석 프로파일링 시스템
WO2018016671A2 (ko) 보안 취약점 점검을 위한 위험성 코드 검출 시스템 및 그 방법
US8490071B2 (en) Shared prefetching to reduce execution skew in multi-threaded systems
JP2020500368A (ja) データプリフェッチング方法、装置、およびシステム
Liao et al. Prefetching on storage servers through mining access patterns on blocks
JP2004517383A (ja) 補助プロセッサを用いて一次プロセッサ用の命令をプリフェッチする方法および装置
JP2021157843A (ja) 命令を実行するための方法、装置、機器及びコンピュータ読み取り可能な記憶媒体
Rau Program behavior and the performance of interleaved memories
Stratis et al. Speeding up test execution with increased cache locality

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 14791438

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 14791438

Country of ref document: EP

Kind code of ref document: A1