KR102617678B1 - Selective memory coalescing device and method according to a class of load instruction - Google Patents

Selective memory coalescing device and method according to a class of load instruction Download PDF

Info

Publication number
KR102617678B1
KR102617678B1 KR1020230040139A KR20230040139A KR102617678B1 KR 102617678 B1 KR102617678 B1 KR 102617678B1 KR 1020230040139 A KR1020230040139 A KR 1020230040139A KR 20230040139 A KR20230040139 A KR 20230040139A KR 102617678 B1 KR102617678 B1 KR 102617678B1
Authority
KR
South Korea
Prior art keywords
memory
load
dummy
read command
request
Prior art date
Application number
KR1020230040139A
Other languages
Korean (ko)
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 고려대학교 산학협력단
Application granted granted Critical
Publication of KR102617678B1 publication Critical patent/KR102617678B1/en

Links

Classifications

    • 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/062Securing storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • 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/0604Improving or facilitating administration, e.g. storage management
    • 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/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

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)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

본 발명의 메모리 접합 장치는 GPU에서의 선별적 메모리 접합 장치에 관한 것으로, 메모리 읽기 명령어를 외부 공격에 대한 취약 여부에 따라, ND-load 혹은 D-load로 분류하는 분류기, 메모리 읽기 명령어에 따라 메모리 요청을 생성하는 LSU(load/store unit), 생성된 메모리 요청을 접합하는 접합기 및 메모리 읽기 명령어가 ND-load로 분류된 경우, 더미 메모리 요청을 생성하는 더미 생성기를 포함할 수 있다.The memory bonding device of the present invention relates to a selective memory bonding device in GPU. A classifier that classifies memory read commands as ND-load or D-load according to whether they are vulnerable to external attacks, and a memory bonding device according to the memory read command. It may include a load/store unit (LSU) that generates a request, a jointer that joins the generated memory request, and a dummy generator that generates a dummy memory request when the memory read instruction is classified as ND-load.

Description

메모리 읽기 명령어 분류에 따른 선별적 메모리 접합 장치 및 방법{Selective memory coalescing device and method according to a class of load instruction}Selective memory coalescing device and method according to a class of load instruction}

본 발명은 메모리 접합 장치 및 방법에 관한 것으로, 메모리 요청을 접합하고, 메모리 읽기 명령어의 취약성에 기반하여 선별적으로 더미 메모리 요청을 생성하는 메모리 접합 장치 및 방법이다.The present invention relates to a memory splicing device and method, which combines memory requests and selectively generates dummy memory requests based on vulnerabilities in memory read commands.

메모리 접합이란 GPU에서 워프 단위의 실행 모델로 인하여 발생하는 메모리 명령어의 성능 오버헤드를 줄이기 위한 방법의 하나로, GPU에서 워프에 의해 메모리 읽기 명령을 수행에 따라 생성된 메모리 요청들 중, 일 기준에 따라 메모리 요청 일부 혹은 전부를 묶어 실행해야 할 메모리 요청의 수를 줄여 캐쉬 접근을 수행하도록 하는 기술이다. GPU는 메모리 접합을 통해, 메모리 요청에 필요한 시간을 단축할 수 있는 등 성능을 향상시킬 수 있다.Memory splicing is a method to reduce the performance overhead of memory instructions that occurs due to the warp-level execution model in the GPU. Among the memory requests generated by performing a memory read command by warp in the GPU, according to one standard. This is a technology that performs cache access by bundling some or all of the memory requests and reducing the number of memory requests that need to be executed. GPUs can improve performance by shortening the time required for memory requests through memory bonding.

하지만, 메모리 접합에 따라 보안 상에 허점이 발생할 수 있고, 이를 이용한 접합 유닛 부채널 공격(coalescing unit side-channel attack)과 같은 외부 공격에 취약해질 수 있다. 하나의 예로, GPU에서 동작하는 AES(Advanced Encryption Standard)에 대한 실행 시간(execution time) 및 메모리 요청 개수의 상관관계를 이용하는 상관 기반 AES 공격(correlation based AES attack)의 경우, 공격자는 GPU에서 AES를 실행시킨 후, AES 암호화를 통하여 평문이 암호문으로 나오는데 걸리는 실행 시간과, 메모리 접합 결과로 생성된 메모리 요청의 수 정보를 획득하여 이들 사이의 연관성을 이용하여 AES 암호키 값을 유추할 수 있다.However, security vulnerabilities may occur depending on memory coalescence, and it may be vulnerable to external attacks such as coalescing unit side-channel attacks. As an example, in the case of a correlation-based AES attack that uses the correlation between the execution time and the number of memory requests for AES (Advanced Encryption Standard) running on GPUs, the attacker uses AES on GPUs. After execution, the execution time it takes for plaintext to become ciphertext through AES encryption and the number of memory requests generated as a result of memory splicing are obtained, and the AES encryption key value can be inferred using the correlation between them.

이러한 예와 같이 메모리 접합은 암호화에 걸리는 시간과, 메모리 접합의 결과로 생성된 메모리 요청의 수의 상관관계로 인하여 암호키가 유추될 수 있어, 이를 이용한 공격에 취약하다는 문제가 있었다. 따라서 메모리 접합에 따라 생성된 메모리 요청의 개수와 암호화에 걸리는 시간 사이의 관계를 유추할 수 없도록 하는 기술이 필요하게 되었다.As in this example, memory splicing has a problem in that the encryption key can be inferred due to the correlation between the time taken for encryption and the number of memory requests generated as a result of memory splicing, making it vulnerable to attacks using this. Therefore, a technology that prevents inferring the relationship between the number of memory requests generated according to memory splicing and the time required for encryption has become necessary.

본 발명의 일 실시예에 따른 선별적 메모리 접합 장치 및 방법은, 외부 공격에 취약한 메모리 읽기 명령어를 선별하고, 이에 따라 생성되는 메모리 요청들은 추가적인 더미 메모리 요청을 생성하여 공격자로 하여금 정확한 메모리 요청의 수를 알아낼 수 없도록 하여 보안을 강화하고자 한다.The selective memory splicing device and method according to an embodiment of the present invention selects memory read commands that are vulnerable to external attacks, and the memory requests generated accordingly generate additional dummy memory requests, allowing the attacker to determine the correct number of memory requests. We want to strengthen security by making it impossible to find out.

또한, 외부 공격에 취약하지 않은 메모리 읽기 명령어에 대해서는 추가적인 더미 메모리 요청을 생성하지 않아 불필요하게 성능이 저하되는 것을 방지하고자 한다. In addition, we aim to prevent unnecessary performance degradation by not generating additional dummy memory requests for memory read commands that are not vulnerable to external attacks.

본 발명의 일 실시예에 따른 메모리 접합 장치는, GPU에서의 선별적 메모리 접합 장치에 관한 것으로, 메모리 읽기 명령어가 외부 공격에 취약한 사용자 의존적 명령어이면 ND-load(non-deterministic load)로, 외부 공격에 취약하지 않은 시스템 의존적 명령어이면 D-load(deterministic load)로 분류하는 분류기, 메모리 읽기 명령어에 따라 메모리 요청을 생성하는 LSU(load/store unit), 생성된 메모리 요청을 접합하는 접합기 및 메모리 읽기 명령어가 ND-load로 분류된 경우, 더미 메모리 요청을 생성하는 더미 생성기를 포함할 수 있다. The memory bonding device according to an embodiment of the present invention relates to a selective memory bonding device in a GPU. If the memory read command is a user-dependent instruction vulnerable to external attack, it is ND-load (non-deterministic load), and external attack is prevented. A classifier that classifies a system-dependent instruction that is not vulnerable to a D-load (deterministic load), a load/store unit (LSU) that generates a memory request according to a memory read instruction, a jointer that joins the generated memory request, and a memory read instruction. If is classified as ND-load, it may include a dummy generator that generates a dummy memory request.

또한, 일 실시예에 따라서, 분류기는 메모리 읽기 명령어의 의존적 인덱스 포함 여부에 따라 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 할 수 있다.Additionally, according to one embodiment, the classifier may classify the memory read command into the ND-load or the D-load depending on whether the memory read command includes a dependent index.

또한, 일 실시예에 따라서, 분류기는, 메모리 읽기 명령어가 사용자 의존적 인덱스를 포함하고 있으면 상기 ND-load로 분류하고, 시스템 의존적 인덱스를 포함하고 있으면 상기 D-load로 분류하는 것을 특징으로 할 수 있다.In addition, according to one embodiment, the classifier may classify a memory read command as the ND-load if it includes a user-dependent index, and classify it as the D-load if it includes a system-dependent index. .

또한, 일 실시예에 따라서, 사용자가 복수의 메모리 영역을 직접 지정하고, 메모리 영역을 메모리 읽기 명령어가 포함하는지 여부에 따라 분류기가 ND-load 혹은 D-load로 분류하도록 설정하고, 분류기는, 메모리 읽기 명령어가 사용자가 지정한 메모리 영역을 포함하는 경우, 이를 설정에 따라 ND-load 혹은 D-load로 분류하는 것을 특징으로 할 수 있다.In addition, according to one embodiment, the user directly specifies a plurality of memory areas, sets the classifier to classify the memory area as ND-load or D-load depending on whether the memory area includes a memory read command, and the classifier determines the memory area. If the read command includes a memory area designated by the user, it may be classified as ND-load or D-load depending on the setting.

또한, 일 실시예에 따라서, 레지스터 및 각 비트들이 레지스터에 할당되고, false로 초기화된 상태의 보안 비트 테이블을 더 포함하여, 메모리 요청에 따라 가져온 데이터를 레지스터에 저장할 때, 데이터가 특정 메모리 영역으로부터 가져온 것이면, 레지스터에 할당된 비트의 값을 true로 변경하고, 분류기는, 메모리 요청이 접근하는 레지스터에 할당된 비트의 값이 true인지 false인지에 따라 메모리 읽기 명령어를 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 할 수 있다.In addition, according to one embodiment, the register and each bit are allocated to the register, and further include a security bit table initialized to false, so that when data retrieved according to a memory request is stored in the register, the data is stored in the register. If it is fetched, the value of the bit assigned to the register is changed to true, and the classifier executes the ND-load or D-load memory read command depending on whether the value of the bit assigned to the register accessed by the memory request is true or false. It can be characterized by classification by load.

또한, 일 실시예에 따라서, 더미 생성기는, 더미 메모리 요청 및 접합기에서 접합된 메모리 요청의 수의 합이 항상 기설정한 개수가 되도록 하는 수만큼 더미 메모리 요청을 생성하는 것을 특징으로 할 수 있다.Additionally, according to one embodiment, the dummy generator may be characterized in that it generates a number of dummy memory requests such that the sum of the number of dummy memory requests and memory requests concatenated by the splicer is always a preset number.

또한, 일 실시예에 따라서, 더미 생성기는, 메모리 요청들의 기존 주소값들의 범위 안에서 겹치지 않는 주소값을 순차적으로 사용하여 더미 메모리 요청의 주소로 설정하는 것을 특징으로 할 수 있다.Additionally, according to one embodiment, the dummy generator may sequentially use address values that do not overlap within the range of existing address values of memory requests and set them as the address of the dummy memory request.

또한, 일 실시예에 따라서, 더미 생성기는, 메모리 요청들의 기존 주소값들의 범위 내에 더미 메모리 요청에 할당할 주소가 충분하지 않을 경우, 기존 주소값들에 인접한 주소를 더미 메모리 요청의 주소로 설정하는 것을 특징으로 할 수 있다.Additionally, according to one embodiment, the dummy generator sets an address adjacent to the existing address values as the address of the dummy memory request when there are not enough addresses to assign to the dummy memory request within the range of existing address values of the memory requests. It can be characterized as:

본 발명의 일 실시예에 따른 메모리 접합 방법은, GPU에서의 선별적 메모리 접합 방법에 관한 것으로, 메모리 읽기 명령어가 외부 공격에 취약한 사용자 의존적 명령어이면 ND-load로, 외부 공격에 취약하지 않은 시스템 의존적 명령어이면 D-load로 분류하는 분류 단계, 메모리 읽기 명령어에 따라 메모리 요청을 생성하는 메모리 요청 생성 단계, 생성된 메모리 요청을 접합하는 접합 단계 및 메모리 읽기 명령어가 ND-load로 분류된 경우, 더미 메모리 요청을 생성하는 더미 생성 단계를 포함할 수 있다. The memory bonding method according to an embodiment of the present invention relates to a selective memory bonding method in GPU. If the memory read command is a user-dependent instruction vulnerable to external attacks, it is ND-load, and the memory read command is ND-load, and is a system-dependent instruction that is not vulnerable to external attacks. If it is an instruction, a classification step to classify it as D-load, a memory request generation step to generate a memory request according to the memory read instruction, a splicing step to join the generated memory request, and if the memory read instruction is classified as ND-load, a dummy memory It may include a dummy creation step that creates a request.

또한, 일 실시예에 따라서, 분류 단계는, 메모리 읽기 명령어의 의존적 인덱스 포함 여부에 따라 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 할 수 있다.Additionally, according to one embodiment, the classification step may be characterized by classifying the memory read command into the ND-load or the D-load depending on whether a dependent index is included.

또한, 일 실시예에 따라서, 분류 단계는, 메모리 읽기 명령어가 사용자 의존적 인덱스를 포함하고 있으면 상기 ND-load로 분류하고, 시스템 의존적 인덱스를 포함하고 있으면 상기 D-load로 분류하는 것을 특징으로 할 수 있다.Additionally, according to one embodiment, the classification step may be characterized by classifying the memory read command as the ND-load if it includes a user-dependent index, and classifying it as the D-load if it includes a system-dependent index. there is.

또한, 일 실시예에 따라서, 사용자가 복수의 메모리 영역을 직접 지정하고, 메모리 영역을 메모리 읽기 명령어가 포함하는지 여부에 따라 분류 단계에서 ND-load 혹은 D-load로 분류하도록 설정하는 단계를 더 포함하고, 분류 단계는, 메모리 읽기 명령어가 사용자가 지정한 메모리 영역을 포함하는 경우, 이를 설정에 따라 ND-load 혹은 D-load로 분류하는 것을 특징으로 할 수 있다.In addition, according to one embodiment, the user directly specifies a plurality of memory areas, and further includes setting the memory areas to be classified as ND-load or D-load in the classification step depending on whether the memory area includes a memory read command. And, the classification step may be characterized by classifying it as ND-load or D-load depending on the setting when the memory read command includes a memory area designated by the user.

또한, 일 실시예에 따라서, 레지스터 및 각 비트들이 레지스터에 할당되고, false로 초기화된 상태의 보안 비트 테이블을 더 포함하여, 메모리 요청에 따라 가져온 데이터를 레지스터에 저장할 때, 데이터가 특정 메모리 영역으로부터 가져온 것이면, 레지스터에 할당된 비트의 값을 true로 변경하고, 분류 단계는, 메모리 요청이 접근하는 레지스터에 할당된 비트의 값이 true인지 false인지에 따라 메모리 읽기 명령어를 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 할 수 있다.In addition, according to one embodiment, the register and each bit are allocated to the register, and further include a security bit table initialized to false, so that when data retrieved according to a memory request is stored in the register, the data is stored in the register. If it is fetched, the value of the bit assigned to the register is changed to true, and in the classification step, a memory read command is executed according to whether the value of the bit assigned to the register accessed by the memory request is true or false. It can be characterized by classification as -load.

또한, 일 실시예에 따라서, 더미 생성 단계는, 더미 메모리 요청 및 접합기에서 접합된 메모리 요청의 수의 합이 항상 기설정한 개수가 되도록 하는 수만큼 더미 메모리 요청을 생성하는 것을 특징으로 할 수 있다.Additionally, according to one embodiment, the dummy generation step may be characterized by generating a number of dummy memory requests such that the sum of the dummy memory requests and the number of memory requests concatenated by the splicer is always a preset number. .

또한, 일 실시예에 따라서, 더미 생성 단계는, 메모리 요청들의 기존 주소값들의 범위 안에서 겹치지 않는 주소값을 순차적으로 사용하여 더미 메모리 요청의 주소로 설정하는 것을 특징으로 할 수 있다.Additionally, according to one embodiment, the dummy creation step may be characterized by sequentially using address values that do not overlap within the range of existing address values of memory requests and setting them as the address of the dummy memory request.

또한, 일 실시예에 따라서, 더미 생성 단계는, 메모리 요청들의 기존 주소값들의 범위 내에 더미 메모리 요청에 할당할 주소가 충분하지 않을 경우, 기존 주소값들에 인접한 주소를 더미 메모리 요청의 주소로 설정하는 것을 특징으로 할 수 있다.Additionally, according to one embodiment, the dummy creation step sets an address adjacent to the existing address values as the address of the dummy memory request when there are not enough addresses to assign to the dummy memory request within the range of existing address values of the memory requests. It can be characterized as:

본 발명의 일 실시예에 따른 선별적 메모리 접합 장치 및 방법은, 외부 공격에 취약한 메모리 읽기 명령어를 선별하고, 이에 따라 생성되는 메모리 요청들은 추가적인 더미 메모리 요청을 생성하여 공격자로 하여금 정확한 메모리 요청의 수를 알아낼 수 없도록 하여 보안을 강화할 수 있다.The selective memory splicing device and method according to an embodiment of the present invention selects memory read commands that are vulnerable to external attacks, and the memory requests generated accordingly generate additional dummy memory requests, allowing the attacker to determine the correct number of memory requests. Security can be strengthened by making it impossible to find out.

또한, 외부 공격에 취약하지 않은 메모리 읽기 명령어에 대해서는 추가적인 더미 메모리 요청을 생성하지 않아 불필요하게 성능이 저하되는 것을 방지할 수 있다.Additionally, additional dummy memory requests are not generated for memory read commands that are not vulnerable to external attacks, preventing unnecessary performance degradation.

도 1은 일 실시예에 따른 본 발명의 메모리 접합 장치에 관한 블록도이다.
도 2는 일 실시예에 따른 메모리 읽기 명령어이다
도 3은 일 실시예에 따른 메모리 읽기 명령어이다
도 4는 일 실시예에 따라 접합기가 메모리 요청을 접합하는 과정을 도시한 블록도이다.
도 5는 일 실시예에 따른 LSU의 블록도이다.
도 6은 일 실시예에 따라 각 메모리 요청의 주소값을 도시한 도면이다.
도 7a는 일 실시예에 따른 메모리 접합 장치와 다른 메모리 접합 장치의 실행 시간을 비교한 그래프이다.
도 7b는 일 실시예에 따른 메모리 접합 장치와 다른 메모리 접합 장치의 에너지 소비량을 비교한 그래프이다.
도 8은 일 실시예에 따른 본 발명의 메모리 접합 방법의 순서도이다.
1 is a block diagram of a memory bonding device of the present invention according to an embodiment.
Figure 2 is a memory read command according to one embodiment.
3 is a memory read command according to one embodiment.
Figure 4 is a block diagram illustrating a process in which a combiner combines memory requests according to one embodiment.
Figure 5 is a block diagram of LSU according to one embodiment.
Figure 6 is a diagram showing the address value of each memory request according to one embodiment.
FIG. 7A is a graph comparing execution times of a memory bonding device according to one embodiment and another memory bonding device.
FIG. 7B is a graph comparing energy consumption of a memory bonding device according to one embodiment and another memory bonding device.
Figure 8 is a flow chart of the memory bonding method of the present invention according to one embodiment.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. The advantages and features of the present invention and methods for achieving them will become clear with reference to the embodiments described below along with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below and may be implemented in various different forms. The present embodiments are merely provided to ensure that the disclosure of the present invention is complete and to be understood by those skilled in the art. It is provided to fully inform those who have the scope of the invention, and the present invention is only defined by the scope of the claims.

본 명세서에서 사용되는 용어에 대해 간략히 설명하고, 본 발명에 대해 구체적으로 설명하기로 한다. The terms used in this specification will be briefly explained, and the present invention will be described in detail.

본 발명에서 사용되는 용어는 본 발명에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 발명의 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 발명에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 발명의 전반에 걸친 내용을 토대로 정의되어야 한다.The terms used in the present invention are general terms that are currently widely used as much as possible while considering the function in the present invention, but this may vary depending on the intention or precedent of a person working in the art, the emergence of new technology, etc. In addition, in certain cases, there are terms arbitrarily selected by the applicant, and in this case, the meaning will be described in detail in the description of the relevant invention. Therefore, the terms used in the present invention should be defined based on the meaning of the term and the overall content of the present invention, rather than simply the name of the term.

명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다. 또한, 명세서에서 사용되는 "부", "모듈", "유닛" 등의 용어는 적어도 하나의 기능 또는 동작을 처리하는 단위를 의미하며, 소프트웨어, FPGA 또는 ASIC과 같은 하드웨어 구성요소, 또는 소프트웨어와 하드웨어의 결합으로 구현될 수 있다. 그렇지만 "부", "모듈", "유닛" 등의 용어가 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. "부", "모듈", "유닛" 등은 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 ""부", "모듈", "유닛" 등의 용어는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로 코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. When it is said that a part "includes" a certain element throughout the specification, this means that, unless specifically stated to the contrary, it does not exclude other elements but may further include other elements. In addition, terms such as “unit”, “module”, “unit”, etc. used in the specification mean a unit that processes at least one function or operation, and include software, hardware components such as FPGA or ASIC, or software and hardware. It can be implemented by combining . However, terms such as “part”, “module”, and “unit” are not limited to software or hardware. A “part”, “module”, “unit”, etc. may be configured to reside on an addressable storage medium and may be configured to reproduce on one or more processors. Accordingly, as an example, terms such as "part", "module", and "unit" refer to components such as software components, object-oriented software components, class components, and task components, and processes. Contains fields, functions, properties, procedures, subroutines, segments of program code, drivers, firmware, microcode, circuits, data, databases, data structures, tables, arrays, and variables. .

아래에서는 첨부한 도면을 참고하여 본 발명의 실시예에 대하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략한다. “제1", "제2" 등과 같이 서수를 포함하는 용어는 다양한 구성 요소들을 설명하는데 사용될 수 있지만, 구성 요소들은 용어들에 의해 한정되지는 않는다. 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. "및/또는" 이라는 용어는 복수의 관련된 항목들의 조합 또는 복수의 관련된 항목들 중의 어느 하나의 항목을 포함한다.Below, with reference to the attached drawings, embodiments of the present invention will be described in detail so that those skilled in the art can easily implement the present invention. In order to clearly explain the present invention in the drawings, parts unrelated to the description are omitted. Terms containing ordinal numbers, such as “first”, “second”, etc., may be used to describe various components, but the components are not limited by the terms. Terms are used to separate one component from another. It is used for distinguishing purposes only. For example, a first component may be named a second component without departing from the scope of the present invention, and similarly, the second component may also be named a first component. The term “and/or” includes a combination of a plurality of related items or any one item among a plurality of related items.

본 명세서에 설명된 다양한 시스템, 장치, 저장 매체, 모듈 및 기구는 전용 연산 디바이스, 또는 하나 이상의 전용 연산 디바이스의 하나 이상의 연산 칩에서 구현될 수도 있다. The various systems, devices, storage media, modules and mechanisms described herein may be implemented in a dedicated computing device, or one or more computing chips of one or more dedicated computing devices.

이하, 본 발명의 선별적 메모리 접합 장치(1) 및 방법에 관하여 설명하도록 한다. Hereinafter, the selective memory bonding device 1 and method of the present invention will be described.

도 1은 일 실시예 따른 본 발명의 메모리 접합 장치(1)에 관한 블록도이다.Figure 1 is a block diagram of a memory bonding device 1 of the present invention according to an embodiment.

본 발명의 메모리 접합 장치(1)은 메모리 읽기 명령어(memory load instruction)에 따라 메모리 요청(memory request)을 생성하고, 메모리 접합(memory coalescing)을 실시할 수 있다. 또한, 메모리 접합 장치(1)은 이에 따라 생성된 메모리 요청을 항상 일정한 수로 유지하기 위해 더미 메모리 요청(dummy memory request)를 추가적으로 생성할 수 있다.The memory coalescing device 1 of the present invention can generate a memory request and perform memory coalescing according to a memory load instruction. Additionally, the memory bonding device 1 may additionally generate dummy memory requests in order to always maintain a constant number of memory requests generated accordingly.

본 발명의 메모리 접합 장치(1)은 공격에 취약한 메모리 읽기 명령어 및 공격에 취약하지 않은 메모리 읽기 명령어를 선별하여 모든 메모리 읽기 명령어에 대해 더미 메모리 요청을 생성하는 것이 아닌, 공격에 취약한 메모리 읽기 명령어를 수행하는 경우에만 더미 메모리 요청을 생성하도록 할 수 있다. 여기서 공격에 취약한 메모리 읽기 명령어를 non-deterministic memory load instruction(ND-load)로, 공격에 취약하지 않은 메모리 읽기 명령어를 deterministic memory load instruction(D-load)로 나타낼 수 있다. 또한, 외부 공격에 취약한 메모리 읽기 명령어(ND-load)의 경우, 사용자 의존적 명령어와 혼용될 수 있고, 외부 공격에 취약하지 않은 메모리 읽기 명령어(D-load)는 시스템 의존적 명령어와 혼용될 수 있다. 이에 대해서는 후술할 설명에 의해 명확해질 것이다. The memory bonding device 1 of the present invention selects memory read commands that are vulnerable to attacks and memory read commands that are not vulnerable to attacks, and instead of generating dummy memory requests for all memory read commands, it selects memory read commands that are vulnerable to attacks. You can create a dummy memory request only when executing. Here, a memory read instruction vulnerable to attack can be expressed as a non-deterministic memory load instruction (ND-load), and a memory read instruction not vulnerable to attack can be expressed as a deterministic memory load instruction (D-load). Additionally, the memory read command (ND-load), which is vulnerable to external attacks, can be mixed with user-dependent commands, and the memory read command (D-load), which is not vulnerable to external attacks, can be mixed with system-dependent commands. This will become clear through the explanation given later.

메모리 읽기 명령어는 캐쉬(cache) 등의 메모리에 접근하도록 하는 명령어로, GPU의 메모리 계층 구조 중 하나인 전역 메모리(Global Memory)에서 데이터를 읽어와서 레지스터(Register)나 공유 메모리(Shared Memory)로 복사하도록 명령할 수 있다. 메모리 읽기 명령어는 인스트럭션 버퍼(Instruction buffer, I-Buffer) 등에 저장되어 메모리 접근시에 이용될 수 있다.The memory read command is a command that accesses memory such as a cache. It reads data from global memory, one of the GPU's memory hierarchies, and copies it to a register or shared memory. You can order it to be done. The memory read command can be stored in an instruction buffer (I-Buffer), etc. and used when accessing memory.

본 발명의 메모리 접합 장치(1)은 GPU의 가장 작은 단위의 코어(core)인 스트리밍 프로세서(streaming processor, SP)들의 집합체인 스트리밍 멀티프로세서(streaming multiprocessor, SM)에서 동작할 수 있다. 또한, 본 발명의 워프(warp)는 스트리밍 멀티프로세서의 기본 실행 단위를 의미한다. The memory bonding device 1 of the present invention can operate on a streaming multiprocessor (SM), which is a collection of streaming processors (SPs), which are the smallest unit cores of a GPU. Additionally, warp of the present invention refers to the basic execution unit of a streaming multiprocessor.

본 발명의 메모리 접합 장치(1)은 GPU에서 동작할 수 있는 선별적 메모리 접합 장치(1)에 관한 것으로, 분류기(100), LSU(load/store unit, 200), 접합기(210) 및 더미 생성기(230)를 포함할 수 있다. 일 실시예 의하면, 접합기(210) 및 더미 생성기(230)는 LSU(200) 내에 포함된 형태로 구성될 수 있다. 또한, 메모리 접합 장치(1)는 인스트럭션 버퍼(I-buffer), 스코어보드(scoreboard) 및 실행 유닛(execution units), 보안 비트 테이블(300) 및 레지스터(400)를 더 포함할 수 있다. 본 발명의 메모리 접합 장치(1)에 포함될 수 있는 인스트럭션 버퍼, 스코어보드 및 실행 유닛 등은 본 발명의 장치의 동작을 위한 장치로, 일반적인 메모리 장치의 해당 구성과 역할이 유사하여 자세한 설명은 생략하도록 한다.The memory splicing device 1 of the present invention relates to a selective memory splicing device 1 that can operate on a GPU, and includes a sorter 100, a load/store unit (LSU) 200, a splicer 210, and a dummy generator. It may include (230). According to one embodiment, the jointer 210 and the dummy generator 230 may be included in the LSU (200). Additionally, the memory bonding device 1 may further include an instruction buffer (I-buffer), a scoreboard and execution units, a security bit table 300, and a register 400. The instruction buffer, scoreboard, and execution unit that may be included in the memory bonding device 1 of the present invention are devices for operating the device of the present invention, and their configuration and role are similar to that of a general memory device, so detailed description will be omitted. do.

분류기(100)는 메모리 읽기 명령어를 공격에 대한 취약 여부에 따라 분류할 수 있다. 여기서 공격은 전술한 상관 기반 AES 공격(correlation based AES attack)과 같은 접합 유닛 부채널 공격(coalescing unit side-channel attack)을 의미할 수 있다. 분류기(100)는 메모리 읽기 명령어를 공격에 취약한 메모리 읽기 명령어(ND-load) 혹은 공격에 취약하지 않은 메모리 읽기 명령어(D-load)로 분류할 수 있다. 본 발명의 메모리 접합 장치(1)은 메모리 읽기 명령어를 공격에 취약한지 혹은 공격에 취약하지 않은지에 따라 더미 메모리 요청을 생성 여부를 결정하여 불필요한 더미 메모리 생성 요청을 방지하여 성능의 저하를 방지할 수 있다. The classifier 100 may classify memory read commands according to whether they are vulnerable to attack. Here, the attack may mean a coalescing unit side-channel attack such as the correlation-based AES attack described above. The classifier 100 can classify memory read commands into memory read commands (ND-load) that are vulnerable to attacks or memory read commands (D-load) that are not vulnerable to attacks. The memory bonding device 1 of the present invention determines whether to generate a dummy memory request depending on whether the memory read command is vulnerable to attack or not, thereby preventing unnecessary dummy memory creation requests and thereby preventing performance degradation. there is.

분류기(100)는 메모리 읽기 명령어가 외부 공격에 취약한 사용자 의존적 명령어이면 공격에 취약한 메모리 읽기 명령어(ND-load)로, 외부 공격에 취약하지 않은 시스템 의존적 명령어이면 공격에 취약하지 않은 명령어(D-load)로 분류할 수 있다. 사용자 의존적 명령어는 및 시스템 의존적 명령어는 해당 메모리 읽기 명령어에 포함된 코드 등의 내용을 기반으로 사용자에 따라 생성되는 메모리 요청의 개수가 변할 수 있는지에 따라 결정될 수 있다. 즉, 사용자 의존적 명령어는 사용자에 따라 생성되는 메모리 요청의 개수가 변경될 수 있는 메모리 읽기 명령어이고, 시스템 의존적 명령어는 사용자에 따라 생성되는 메모리 요청의 개수가 변경되지 않고 항상 일정한 메모리 읽기 명령어를 의미할 수 있다.The classifier 100 selects a memory read command (ND-load) vulnerable to attack if the memory read command is a user-dependent command vulnerable to external attacks, and a command (D-load) not vulnerable to attacks if the memory read command is a system-dependent command not vulnerable to external attacks. ) can be classified as: The user-dependent command and the system-dependent command may be determined depending on whether the number of memory requests generated depending on the user may vary based on contents such as code included in the corresponding memory read command. In other words, a user-dependent command is a memory read command in which the number of memory requests generated can change depending on the user, and a system-dependent command means a memory read command in which the number of memory requests generated does not change depending on the user and is always constant. You can.

분류기(100)는 다양한 방식에 따라 메모리 읽기 명령어를 분류할 수 있다. The classifier 100 can classify memory read commands according to various methods.

일 실시예에 의하면, 분류기(100)는 메모리 읽기 명령어에 포함된 인덱스의 의존성에 따라 취약 여부를 결정할 수 있다.According to one embodiment, the classifier 100 may determine whether or not the memory is vulnerable depending on the dependency of the index included in the memory read command.

도 2 및 3을 참조하여 메모리 읽기 명령어에 포함된 인덱스의 의존성에 따른 취약 여부 결정 과정에 관하여 설명하도록 한다.With reference to FIGS. 2 and 3, the process of determining vulnerability depending on the dependency of the index included in the memory read command will be described.

도 2는 일 실시예에 따른 메모리 읽기 명령어이다.Figure 2 is a memory read command according to one embodiment.

도 2의 메모리 읽기 명령어는 GPU에서 동작하는 AES에 따른 메모리 읽기 명령어이다. 도 2에 따르면, 메모리 읽기 명령어에 포함된 pt array의 인덱스(index)는 tid로부터 유래될 수 있으며, tid는 워프 내에 존재하는 스레드들에 할당된 thread id 및/혹은 block id를 이용하여 계산될 수 있다. GPU 커널(GPU Kernel)은 일반적으로 스레드에 thread id 및/혹은 block id를 할당하여 array에 접근하며, thread id 및 block id를 이용하여 tid를 계산한다. GPU는 array 형태를 가지는 데이터를 복수의 스레드가 병렬적으로 array 데이터의 요소(element)들을 thread id 및/혹은 block id로 계산된 인덱스를 이용하는 형태를 빈번하게 사용한다. Thread id 및/혹은 block id는 사용자에 따라 값이 변하는 것이 아니며, 동일한 값으로 유지되는 경우가 많으므로, thread id 및/혹은 block id에서 계산되는 인덱스는 매우 정형적인 형태를 가질 수 있다. 따라서, thread id 및/혹은 block id를 이용하는 것과 같이 사용자에 따라 값이 변하지 않는 인덱스를 사용자 비의존적 인덱스(user-independent index) 혹은 시스템 의존적 인덱스(system-dependent index)로 정의할 수 있다. 이렇게 시스템 의존적 인덱스를 이용하여 array 데이터를 접근할 경우, LSU(200) 및 접합기(210)를 통하여 거의 동일한 수의 메모리 요청을 생성하게 된다. 즉, 사용하는 인덱스 값에 따라 생성하는 메모리 요청 개수가 거의 변하지 않기 때문에 이러한 형태의 메모리 읽기 명령어는 전체 커널의 수행시간에서 거의 고정된 수행 시간을 차지하고 있을 수 있다. 따라서, 공격자는 이러한 형태의 메모리 요청에 대해서는 메모리 요청 개수 및 실행시간의 상관관계를 이용한 공격을 수행하기 어렵다. 분류기(100)는 전술한 바와 같이 시스템 의존적 인덱스를 사용한 유형의 메모리 읽기 명령어를 공격에 취약하지 않은 메모리 읽기 명령어(D-load)로 분류할 수 있다.The memory read command in FIG. 2 is a memory read command according to AES that operates on the GPU. According to Figure 2, the index of the pt array included in the memory read command can be derived from tid, and tid can be calculated using the thread id and/or block id assigned to threads existing in the warp. there is. The GPU Kernel generally accesses the array by assigning a thread id and/or block id to the thread, and calculates tid using the thread id and block id. GPUs frequently use array-type data in which multiple threads parallelly use indexes calculated by thread ID and/or block ID for the elements of the array data. Since the value of the thread id and/or block id does not change depending on the user and is often maintained at the same value, the index calculated from the thread id and/or block id may have a very formal form. Therefore, an index whose value does not change depending on the user, such as using a thread id and/or block id, can be defined as a user-independent index or system-dependent index. When accessing array data using a system-dependent index like this, almost the same number of memory requests are generated through the LSU 200 and the joiner 210. In other words, because the number of memory requests generated rarely changes depending on the index value used, this type of memory read command may occupy an almost fixed amount of execution time in the entire kernel execution time. Therefore, it is difficult for an attacker to perform an attack on this type of memory request using the correlation between the number of memory requests and execution time. As described above, the classifier 100 may classify a type of memory read command using a system-dependent index as a memory read command (D-load) that is not vulnerable to attacks.

도 3은 또 다른 실시예에 따른 메모리 읽기 명령어이다.Figure 3 shows a memory read command according to another embodiment.

도 3의 메모리 읽기 명령어는 GPU에서 동작하는 AES에 따른 메모리 읽기 명령어이다. 도 3에 따르면, 메모리 읽기 명령어에 포함된 Te0는 인덱스로 pt와 rek를 연산한 결과 값을 사용한다. 따라서, 전술한 공격에 취약하지 않은 메모리 읽기 명령어(D-load)와 달리 Te0는 rek로 사용되는 암호키와 pt에 따라 접근해야 하는 데이터 접근의 형태가 달라지게 된다. 즉, Te0의 데이터를 불러올 때, 실행되는 메모리 읽기 명령어는 인덱스가 사용자의 데이터 값에 따라서 결정되게 된다. 위와 같이 사용자의 데이터 값에 따라 결정되기 때문에 사용자에 따라 값이 변하는 인덱스를 사용자 의존적 인덱스(user-dependent index)로 정의할 수 있다. 사용자 의존적 인덱스는 사용자가 메모리 값을 변경할 수 있는 메모리 영역을 포함할 수 있으며, 대표적으로 global, local 및 shared 메모리 영역이 이에 해당할 수 있다. 사용자 의존적 인덱스를 이용하여 데이터를 접근할 경우 LSU(200) 및 접합기(210)에서 데이터의 값에 따라 상이한 개수의 메모리 요청을 생성하게 될 수 있다. 상이한 개수의 메모리 요청으로 인하여 메모리 요청 개수 및 실행시간의 상관관계를 이용한 공격에 취약하게 될 수 있다. 분류기(100)는 전술한 바와 같이 사용자 의존적 인덱스를 사용한 유형의 메모리 읽기 명령어를 공격에 취약한 메모리 읽기 명령어(ND-load)로 분류할 수 있다.The memory read command in FIG. 3 is a memory read command according to AES that operates on the GPU. According to Figure 3, Te0 included in the memory read command uses the result of calculating pt and rek as an index. Therefore, unlike the memory read command (D-load), which is not vulnerable to the above-mentioned attack, the form of data access to Te0 varies depending on the encryption key used for rek and pt. In other words, when loading data of Te0, the index of the memory read command executed is determined according to the user's data value. Since it is determined according to the user's data value as above, an index whose value changes depending on the user can be defined as a user-dependent index. The user-dependent index may include a memory area where the user can change the memory value, and representative examples include global, local, and shared memory areas. When data is accessed using a user-dependent index, the LSU 200 and the combiner 210 may generate a different number of memory requests depending on the value of the data. Different numbers of memory requests can make it vulnerable to attacks using the correlation between the number of memory requests and execution time. As described above, the classifier 100 may classify a type of memory read command using a user-dependent index as a memory read command (ND-load) that is vulnerable to attack.

또 다른 실시예에 따르면, 분류기(100)는 메모리 읽기 명령어에 사용자가 미리 지정한 메모리 영역이 포함되어 있는지에 따라 취약 여부를 결정할 수 있다.According to another embodiment, the classifier 100 may determine vulnerability depending on whether the memory read command includes a memory area pre-designated by the user.

실시예에 따르면, 사용자는 복수의 메모리 영역을 사용자가 직접 지정할 수 있고, 또한 해당 메모리 영역을 메모리 읽기 명령어가 포함하는지 여부에 따라 분류기(100)가 공격에 대한 취약 여부를 결정하도록 설정할 수 있다. 분류기(100)는 메모리 읽기 명령어가 앞서 사용자가 지정한 메모리 영역을 포함하는 경우, 이를 사용자 설정에 따라 공격에 취약한 메모리 읽기 명령어(ND-load) 혹은 공격에 취약하지 않은 메모리 읽기 명령어(D-load)로 분류할 수 있다. 예를 들어, 사용자가 값이 변화할 가능성이 높은 어느 메모리 영역을 지정하고, 분류기(100)는 어느 메모리 읽기 명령어가 해당 메모리 영역을 포함하는 경우, 해당 메모리 읽기 명령어를 공격에 취약한 메모리 읽기 명령어(ND-load)로 분류할 수 있다. 또한, 다른 예로, 사용자가 값이 변화할 가능성이 높지 않은 어느 메모리 영역을 지정하고, 분류기(100)는 어느 메모리 읽기 명령어가 해당 메모리 영역을 포함하는 경우, 해당 메모리 읽기 명령어를 공격에 취약하지 않은 메모리 읽기 명령어(D-load)로 분류할 수 있다. According to an embodiment, the user can directly designate a plurality of memory areas and set the classifier 100 to determine whether the memory area is vulnerable to an attack depending on whether a memory read command is included in the corresponding memory area. If the memory read command includes a memory area previously designated by the user, the classifier 100 classifies it as a memory read command (ND-load) that is vulnerable to attack or a memory read command (D-load) that is not vulnerable to attack, depending on the user setting. It can be classified as: For example, if the user specifies a memory area whose value is likely to change, and the classifier 100 determines which memory read command includes the corresponding memory area, the corresponding memory read command is classified as a memory read command ( ND-load). In addition, as another example, the user specifies a memory area whose value is not likely to change, and the classifier 100 determines which memory read command is not vulnerable to attack if a memory read command includes the memory area. It can be classified as a memory read command (D-load).

사용자가 메모리 영역을 직접 지정하여 이를 포함하는지에 따라 공격 취약성을 결정하는 경우, 앞서 시스템 의존적 인덱스 및 사용자 의존적 인덱스 포함 여부에 따라 취약 여부를 결정하는 것에 비하여, 사용자의 직접 판단에 따른 더 세세한 설정이 가능하다는 효과가 있을 수 있다.When determining attack vulnerability based on whether the user directly specifies a memory area and includes it, more detailed settings are required based on the user's direct judgment, compared to determining vulnerability based on whether the system-dependent index and user-dependent index are included. It may have the effect of being possible.

다시 도 1을 참조하여 보안 비트 테이블(secure bit table, 300)을 이용하여 공격 취약 여부에 대하여 결정하는 과정에 관하여 설명하도록 한다.Referring again to FIG. 1, the process of determining vulnerability to attack using the secure bit table (secure bit table, 300) will be described.

실시예에 의하면, 본 발명의 메모리 접합 장치(1)은 레지스터(400) 및 보안 비트 테이블(300)을 더 포함할 수 있다. 각 스트리밍 멀티프로세서 당 한 세트의 보안 비트 테이블(300)이 포함되어 있을 수 있다. 보안 비트 테이블(300)의 각 비트(310)는 false 혹은 true 값을 가질 수 있으며, 모든 비트(310)는 false로 초기화 되어있을 수 있다. 또한, 각 비트(310)는 각 레지스터(400)에 대응되도록 할당되어 있을 수 있다.According to an embodiment, the memory bonding device 1 of the present invention may further include a register 400 and a security bit table 300. One set of security bit tables 300 may be included for each streaming multiprocessor. Each bit 310 of the security bit table 300 may have a false or true value, and all bits 310 may be initialized to false. Additionally, each bit 310 may be allocated to correspond to each register 400.

본 발명의 메모리 접합 장치(1)은 메모리 읽기 명령어를 실행하여 가져온 데이터를 레지스터(400)에 기록하는 경우, 해당 데이터가 특정 메모리 영역으로부터 가져온 것이면, 상기 레지스터(400)에 할당된 상기 비트(310)의 값을 true로 변경할 수 있다. 예를 들어, 해당 데이터가 공격에 취약한 메모리 영역으로부터 가져온 것이면, 해당 데이터를 기록한 레지스터(400)에 할당된 비트(310)의 값을 true로 변경할 수 있다. 여기서 공격에 취약한 메모리 영역은 앞서 언급된 사용자 의존적 인덱스에 포함된 메모리 영역을 의미하는 것일 수 있다.When the memory bonding device 1 of the present invention writes data retrieved by executing a memory read command to the register 400, if the data is retrieved from a specific memory area, the bit 310 assigned to the register 400 ) can be changed to true. For example, if the data is taken from a memory area vulnerable to attack, the value of bit 310 allocated to the register 400 in which the data is recorded can be changed to true. Here, the memory area vulnerable to attack may mean the memory area included in the user-dependent index mentioned above.

또한, 메모리 접합 장치(1)이 다시 메모리 읽기 명령어를 실행할 때, 할당된 비트(310)의 값이 true인 레지스터(400)의 데이터를 이용하는 경우, 가져온 데이터를 기록하고자 하는 레지스터(400)에 할당된 비트(310)의 값을 true로 변경할 수 있다. 위와 같은 과정을 통해 메모리 접합 장치(1)은 보안 비트 테이블(300)의 각 비트(310)들의 값을 true로 변경할 수 있다. In addition, when the memory bonding device 1 executes the memory read command again, if the data of the register 400 in which the value of the assigned bit 310 is true is used, the fetched data is assigned to the register 400 to be written. The value of bit 310 can be changed to true. Through the above process, the memory bonding device 1 can change the value of each bit 310 of the security bit table 300 to true.

분류기(100)는 상기 메모리 요청이 접근하는 상기 레지스터(400)에 할당된 상기 비트(310)의 값이 true인지 false인지에 따라 상기 메모리 읽기 명령어의 공격에 대한 취약 여부를 결정할 수 있다. 예를 들어, 분류기(100)는 할당된 비트(310)의 값이 true인 레지스터(400)에 접근하는 메모리 읽기 명령어를 공격에 취약한 메모리 읽기 명령어(ND-load)로 분류할 수 있다. 반면, 할당된 값이 false인 레지스터에 접근하는 메모리 읽기 명령어는 공격에 취약하지 않은 메모리 읽기 명령어(D-load)로 분류할 수 있다. The classifier 100 may determine whether the memory read command is vulnerable to attack depending on whether the value of the bit 310 assigned to the register 400 accessed by the memory request is true or false. For example, the classifier 100 may classify a memory read instruction that accesses the register 400 in which the value of the allocated bit 310 is true as a memory read instruction (ND-load) that is vulnerable to attack. On the other hand, a memory read instruction that accesses a register with an assigned value of false can be classified as a memory read instruction (D-load) that is not vulnerable to attacks.

LSU(200)는 메모리 읽기 명령어에 따라 메모리 요청을 생성할 수 있다. LSU(200)는 GPU에서 메모리를 읽거나 쓰는 작업을 수행하고, 이를 위해 메모리 주소(address)를 계산하고, 적절한 캐시에서 데이터를 읽거나 쓰는 등의 기능을 수행할 수 있다. 즉, LSU(200)는 메모리 읽기 명령어를 전달받고, 메모리 읽기 작업을 처리하기 위해 해당 데이터가 저장된 메모리 주소를 계산하여 이에 기반한 메모리 요청을 생성할 수 있다. The LSU 200 may generate a memory request according to a memory read command. The LSU 200 can perform functions such as reading or writing memory from the GPU, calculating a memory address, and reading or writing data in an appropriate cache. That is, the LSU 200 may receive a memory read command, calculate the memory address where the relevant data is stored in order to process the memory read task, and generate a memory request based on this.

LSU(200)는 주소 생성 유닛(address generation unit, AGU(270))을 포함하여, 워프가 메모리 읽기 명령을 실행할 때, AGU(270)는 각 스레드의 요청 주소를 계산할 수 있다.The LSU 200 includes an address generation unit (AGU 270), and when a warp executes a memory read command, the AGU 270 can calculate the request address of each thread.

LSU(200)는 워프의 스레드 수에 대응되는 수만큼 메모리 요청을 생성할 수 있으며, 각각의 스레드에 대응하여 각각의 메모리 요청을 생성할 수 있다. 예를 들어, 메모리 읽기 명령어를 수행하기 위한 일 워프의 스레드가 32개인 경우, 해당 워프의 스레드의 개수인 32개만큼의 메모리 요청을 생성할 수 있다.The LSU 200 may generate a number of memory requests corresponding to the number of threads of the warp, and may generate each memory request in response to each thread. For example, if there are 32 threads in a warp to perform a memory read command, memory requests as many as 32, which is the number of threads in the warp, can be generated.

또한, LSU(200)는 메모리 요청 대기열(250)(memory request queue)을 포함할 수 있다. 메모리 요청 대기열(250)은, LSU(200)에서 생성되어 후술될 접합기(210)에서 접합된 메모리 요청 및 더미 생성기(230)에서 생성된 더미 메모리 요청들을 저장하여 수행될 때까지 대기시킬 수 있다. Additionally, the LSU 200 may include a memory request queue 250. The memory request queue 250 may store memory requests generated by the LSU 200 and spliced by the splicer 210, which will be described later, and dummy memory requests generated by the dummy generator 230, and wait until they are performed.

일 실시예에 따른 LSU(200)는 접합기(210) 및 더미 생성기(230)를 더 포함할 수 있다.The LSU 200 according to one embodiment may further include a splicer 210 and a dummy generator 230.

도 4를 참조하여 접합기(210)에 대하여 설명하도록 한다.The jointer 210 will be described with reference to FIG. 4 .

접합기(210)는 메모리 요청을 접합할 수 있다. 메모리 접합은 GPU에서 메모리 액세스 성능을 향상시키기 위한 방법으로, 접합기(210)는 LSU(200)에서 메모리 읽기 명령어를 수행하기 위한 워프의 스레드에 따라 생성된 메모리 요청의 일부 혹은 전부를 접합할 수 있다. Splicer 210 may concatenate memory requests. Memory splicing is a method to improve memory access performance in the GPU, and the splicer 210 can splice some or all of the memory requests generated according to the thread of the warp for performing the memory read command in the LSU 200. .

도 4는 일 실시예에 따라 접합기(210)가 메모리 요청을 접합하는 과정을 도시한 도면이다.FIG. 4 is a diagram illustrating a process in which the combiner 210 combines memory requests according to one embodiment.

도 4의 실시예에서, 단일 워프가 4개의 스레드를 포함하고, 이에 따라 LSU(200)에서 4개의 메모리 요청이 생성되는 것을 가정할 수 있다. 이 실시예에서 스레드 1과 스레드 2의 메모리 요청은 스레드 1과 스레드 2의 주소가 0x10에서 0x1F 사이의 범위에 있으므로 주소 0x1X의 단일 메모리 요청으로 접합될 수 있다. 따라서, 접합기(210)는 워프의 스레드로부터 4개의 메모리 요청 중 일부를 접합하여 총 3개의 메모리 요청을 생성할 수 있다.In the embodiment of Figure 4, it can be assumed that a single warp includes four threads, and thus four memory requests are generated in the LSU 200. In this embodiment, the memory requests of Thread 1 and Thread 2 can be combined into a single memory request at address 0x1X since the addresses of Thread 1 and Thread 2 are in the range 0x10 to 0x1F. Accordingly, the splicer 210 may concatenate some of the 4 memory requests from the warp's threads to create a total of 3 memory requests.

접합기(210)는 접합한 메모리 요청을 메모리 요청 대기열(250)에 전송시켜 메모리 요청이 수행될 때까지 대기시킬 수 있다.The combiner 210 may transmit the combined memory request to the memory request queue 250 and wait until the memory request is performed.

메모리 요청을 접합하는 기준은 위의 예시에 한하지 않고 다양한 기준이 적용될 수 있다. The standards for splicing memory requests are not limited to the above example, and various standards can be applied.

도 5를 참조하여 더미 생성기(230)에 대하여 설명하도록 한다.The dummy generator 230 will be described with reference to FIG. 5 .

도 5는 일 실시예에 따른 더미 생성기(230)를 포함하는 LSU(200)의 블록도이다.Figure 5 is a block diagram of LSU 200 including dummy generator 230 according to one embodiment.

더미 생성기(230)는 더미 메모리 요청(dummy memory request)을 생성할 수 있다. 여기서 더미 메모리 요청은 메모리 요청 주소를 갖는 등 일반적인 메모리 요청과 동일한 형태를 갖춘 반면, 실제 메모리 요청과는 달리 데이터를 가져오지 않는 등 목적이 없는 가짜 메모리 요청으로 정의할 수 있다. The dummy generator 230 may generate a dummy memory request. Here, a dummy memory request has the same form as a regular memory request, such as having a memory request address, but unlike a real memory request, it can be defined as a fake memory request with no purpose, such as not fetching data.

더미 생성기(230)는 LSU(200)에 포함되어, 메모리 읽기 명령을 수행하는 워프에 따라 더미 메모리 요청을 생성할 수 있다. 즉, LSU(200)가 워프에 따라 메모리 요청을 생성하고자 할 때 더미 생성기(230)도 이에 따라 더미 메모리 요청을 생성할 수 있다.The dummy generator 230 is included in the LSU 200 and may generate a dummy memory request according to a warp that performs a memory read command. That is, when the LSU 200 wants to generate a memory request according to a warp, the dummy generator 230 can also generate a dummy memory request accordingly.

더미 생성기(230)를 통해 생성된 더미 메모리 요청은 LSU(200)에서 생성 및 접합기(210)에서 접합된 메모리 요청과 함께 메모리 요청 대기열(250)에 저장되어 수행 준비될 수 있다The dummy memory request generated through the dummy generator 230 may be stored in the memory request queue 250 together with the memory request generated by the LSU 200 and spliced by the splicer 210 and prepared for execution.

더미 생성기(230)는 메모리 요청 대기열(250)에 저장되는 메모리 요청의 수가 항상 일정한 개수가 되도록 더미 메모리 요청의 수를 조절하여 생성할 수 있다. 즉, 더미 생성기(230)는 더미 메모리 요청 및 접합기(210)에서 접합된 메모리 요청의 수의 합이 항상 기설정한 개수가 되돌고 하는 수만큼 더미 메모리 요청을 생성할 수 있다. 따라서, 더미 생성기(230)는 접합기(210)에서 접합된 메모리 요청의 수에 맞추어 더미 메모리 요청의 수를 조절하여 생성할 수 있다. 예를 들어, LSU(200)에서 생성되는 메모리 요청의 수가 항상 8개로 일정하게 하기 위한다고 가정하였을 때, 메모리 접합의 결과로 메모리 요청이 5개가 생성된 경우, 더미 생성기(230)는 더미 메모리 요청을 3개 생성하여 총 생성되는 메모리 요청이 8개가 되도록 할 수 있다. 따라서, 메모리 요청 대기열(250)에는 메모리 읽기 명령어의 종류에 관계없이 항상 같은 수의 메모리 요청이 존재할 수 있다. 이를 통해 본 발명의 메모리 접합 장치(1)은 공격자가 항상 같은 수의 메모리 요청 수를 관찰하게 되도록 하며, 실제 메모리 요청의 수를 알 수 없게 하여 실행시간과 메모리 요청 수의 상관관계에 의한 암호키 유추가 불가능하도록 할 수 있다.The dummy generator 230 may adjust the number of dummy memory requests so that the number of memory requests stored in the memory request queue 250 is always constant. That is, the dummy generator 230 may generate as many dummy memory requests as the sum of the dummy memory requests and the number of memory requests spliced by the splicer 210 always returns to a preset number. Accordingly, the dummy generator 230 can generate the dummy memory requests by adjusting the number of dummy memory requests according to the number of memory requests spliced by the splicer 210. For example, assuming that the number of memory requests generated by the LSU 200 is always kept constant at 8, if 5 memory requests are generated as a result of memory splicing, the dummy generator 230 generates the dummy memory request. You can create 3 so that the total number of memory requests generated is 8. Accordingly, the same number of memory requests may always exist in the memory request queue 250 regardless of the type of memory read command. Through this, the memory bonding device 1 of the present invention allows the attacker to always observe the same number of memory requests, and prevents the attacker from knowing the actual number of memory requests, so that the encryption key is generated by the correlation between the execution time and the number of memory requests. It can make inference impossible.

더미 생성기(230)는 일반적인 메모리 요청과 비슷한 특성을 갖도록 더미 메모리 요청의 특성을 조정하여 생성할 수 있다. 예를 들어, 더미 메모리 요청이 데이터를 가져오기 위한 대기시간이 일반적인 메모리 요청의 대기시간과 동일 내지 유사하도록 생성할 수 있다. 이는 공격자가 더미 메모리 요청과 실제 메모리 요청을 구분하는 것을 방지하고자 하는 것으로, 만약 더미 메모리 요청의 대기시간 등의 특성이 일반적인 메모리 요청과 크게 다를 경우, 공격자가 이를 구분하여 실제 메모리 요청 수를 유추할 수 있기 때문이다.The dummy generator 230 may generate a dummy memory request by adjusting its characteristics to have similar characteristics to a general memory request. For example, a dummy memory request can be created so that the waiting time to retrieve data is the same or similar to the waiting time of a general memory request. This is to prevent an attacker from distinguishing between dummy memory requests and real memory requests. If the characteristics, such as waiting time, of a dummy memory request are significantly different from regular memory requests, the attacker can differentiate between them and infer the number of real memory requests. Because you can.

일 실시예에 따른 더미 생성기(230)는 메모리 읽기 명령어의 외부 공격에 대한 취약 여부에 따라 더미 메모리 요청을 생성할 수 있다. 즉, 메모리 읽기 명령어가 공격에 취약한 메모리 읽기 명령어(ND-load)인지 공격에 취약하지 않은 메모리 읽기 명령어(D-load)인지에 따라 더미 메모리 요청을 생성하거나 생성하지 않을 수 있다. 여기서 공격에 취약한 메모리 읽기 명령어(ND-load) 및 공격에 취약하지 않은 메모리 읽기 명령어(D-load) 여부는 앞서 분류기(100)에서 분류된 것에 따를 수 있다.The dummy generator 230 according to one embodiment may generate a dummy memory request depending on whether the memory read command is vulnerable to external attack. In other words, a dummy memory request may or may not be generated depending on whether the memory read command is a memory read command (ND-load) that is vulnerable to attack or a memory read command (D-load) that is not vulnerable to attack. Here, whether a memory read command (ND-load) that is vulnerable to an attack and a memory read command (D-load) that is not vulnerable to an attack may be determined based on what was previously classified by the classifier 100.

일 실시예에 따른 더미 생성기(230)는 수행되는 메모리 읽기 명령어가 공격에 취약한 메모리 읽기 명령어(ND-load)로 분류된 경우, 더미 메모리 요청을 생성할 수 있다. 공격에 취약한 메모리 읽기 명령어(ND-load)의 경우, LSU(200) 및 접합기(210)를 통해 생성되는 메모리 요청의 수가 상이하게 될 수 있기 때문에, 일반적으로 외부 공격에 취약할 수 있다. 더미 생성기(230)는 이러한 경우에 더미 메모리 요청을 생성함으로써, 항상 일정한 수의 메모리 요청이 생성되도록 할 수 있으며, 이를 통해 외부 공격을 방어할 수 있다.The dummy generator 230 according to an embodiment may generate a dummy memory request when the performed memory read command is classified as a memory read command (ND-load) vulnerable to attack. In the case of a memory read command (ND-load) that is vulnerable to attack, the number of memory requests generated through the LSU 200 and the adapter 210 may be different, so it may be generally vulnerable to external attacks. In this case, the dummy generator 230 can generate a dummy memory request so that a certain number of memory requests are always generated, thereby preventing external attacks.

반대로, 일 실시예에 따른 더미 생성기(230)는 수행되는 메모리 읽기 명령어가 공격에 취약하지 않은 메모리 읽기 명령어(D-load)로 분류된 경우, 더미 메모리 요청을 생성하지 않을 수 있다. 공격에 취약하지 않은 메모리 읽기 명령어(D-load)의 경우, LSU(200) 및 접합기(210)를 통해 생성되는 메모리 요청의 수가 일정하므로, 일반적으로 외부 공격에 취약하지 않을 수 있다. 이러한 경우 오히려 더미 메모리를 생성하게 되면, 불필요한 메모리 요청을 생성하는 것으로 불필요한 성능 저하를 일으킬 수 있다. 따라서, 더미 생성기(230)는 공격에 취약하지 않은 메모리 읽기 명령어(D-load)의 경우에는 더미 메모리를 생성하지 않을 수 있다.Conversely, the dummy generator 230 according to one embodiment may not generate a dummy memory request if the memory read command being performed is classified as a memory read command (D-load) that is not vulnerable to attack. In the case of a memory read command (D-load) that is not vulnerable to attacks, the number of memory requests generated through the LSU 200 and the joint 210 is constant, so it may generally not be vulnerable to external attacks. In this case, creating dummy memory may cause unnecessary performance degradation by creating unnecessary memory requests. Accordingly, the dummy generator 230 may not generate a dummy memory in the case of a memory read command (D-load) that is not vulnerable to attack.

도 6을 참조하여 더미 생성기(230)가 더미 메모리 요청을 생성하는 과정의 일 실시예에 대해 설명하도록 한다.Referring to FIG. 6, an embodiment of a process in which the dummy generator 230 generates a dummy memory request will be described.

도 6은 각 메모리 요청의 주소값을 도시한 도면이다.Figure 6 is a diagram showing the address value of each memory request.

일 실시예에 따르면, 더미 생성기(230)는 더미 메모리를 생성하는 경우, 더미 메모리 요청의 주소값을 설정하여 생성할 수 있다. 더미 생성기(230)는 더미 메모리 요청의 주소값을 해당 워프에서 수행하고 있는 메모리 읽기 명령어가 접근 가능한 범위에서 찾을 수 있다. 도 x의 실시예를 참고하면, 더미 생성기(230)는 워프에서 수행하고 있는 메모리 읽기 명령어가 접근할 수 있는 0x40 내지 0x90의 주소값 중에서 더미 메모리 요청의 주소값을 찾을 수 있다.According to one embodiment, when creating a dummy memory, the dummy generator 230 may create it by setting the address value of the dummy memory request. The dummy generator 230 can find the address value of the dummy memory request within a range accessible to the memory read command being performed in the corresponding warp. Referring to the embodiment of FIG.

더미 생성기(230)는 기존 주소값들의 범위 안에서 겹치지 않는 주소값을 순차적으로 사용할 수 있다. 또한, 기존 주소값 범위 안에서 사용가능한 주소값이 없다면 근처의 주소값을 사용하여 더미 메모리 요청의 주소로 설정하여 주소값 간 차이를 최대한 줄일 수 있다. 도 X의 실시예를 참고하면, 기존의 접합된 메모리 요청이 0x40, 0x60 및 0x90에 접근하는 경우, 더미 생성기(230)는 접근 가능한 0x40 내지 0x90의 주소값 중에서 누락된 블록(0x50, 0x70 및 0x80)을 찾고, 생성할 더미 메모리 요청의 주소로 설정할 수 있다. 만일, 메모리 주소 범위안에서 추가로 더미 메모리 요청에 할당할 주소가 충분하지 않은 경우, 0x30 및 0xA0와 같이 인접한 블록의 주소를 할당하여 설정해줄 수 있다. 더미 생성기(230)는 이러한 방법으로 더미 메모리 요청의 주소를 설정하여 기존의 실제 메모리 요청들과 유사한 특성을 갖도록 더미 메모리 요청을 생성할 수 있다. The dummy generator 230 may sequentially use address values that do not overlap within the range of existing address values. Additionally, if there is no address value available within the existing address value range, the difference between address values can be minimized as much as possible by using a nearby address value and setting it as the address of the dummy memory request. Referring to the embodiment of FIG. ) can be found and set to the address of the dummy memory request to be created. If there are not enough addresses to allocate to additional dummy memory requests within the memory address range, addresses of adjacent blocks such as 0x30 and 0xA0 can be allocated and set. The dummy generator 230 can generate a dummy memory request to have similar characteristics to existing real memory requests by setting the address of the dummy memory request in this way.

이하 도 7a 내지 도 7b를 참조하여 본 발명의 메모리 접합 장치(1)의 성능에 대하여 설명하도록 한다.Hereinafter, the performance of the memory bonding device 1 of the present invention will be described with reference to FIGS. 7A and 7B.

도 7a는 본 발명의 실시예에 따른 메모리 접합 장치(1)과 다른 메모리 접합 장치(1)의 실행 시간을 비교한 그래프이다.Figure 7a is a graph comparing the execution time of the memory bonding device 1 according to an embodiment of the present invention and another memory bonding device 1.

도 7a에 따르면, 본 발명의 서로 다른 실시예에 따른 메모리 접합 장치(1)인 GhostLeg-ND 및 GhostLeg-Key의 실행 시간은 다른 메모리 접합 장치(1)에 비하여 상당히 감소된 실행 시간을 나타냄을 알 수 있다. 따라서, 본 발명의 메모리 접합 장치(1)은 기존의 메모리 접합 장치(1)에 비하여 속도면에서 향상된 성능을 가지고 있음을 알 수 있다.According to FIG. 7A, it can be seen that the execution time of GhostLeg-ND and GhostLeg-Key, which are memory bonding devices 1 according to different embodiments of the present invention, is significantly reduced compared to other memory bonding devices 1. You can. Therefore, it can be seen that the memory bonding device 1 of the present invention has improved performance in terms of speed compared to the existing memory bonding device 1.

도 7b는 본 발명의 실시예에 따른 메모리 접합 장치(1)과 다른 메모리 접합 장치(1)의 에너지 소비량을 비교한 그래프이다.Figure 7b is a graph comparing the energy consumption of the memory bonding device 1 according to an embodiment of the present invention and another memory bonding device 1.

도 7b에 따르면, 본 발명의 서로 다른 실시예에 따른 메모리 접합 장치(1)인 GhostLeg-ND 및 GhostLeg-Key의 실행 시간은 다른 메모리 접합 장치(1)에 비하여 상당히 감소된 에너지 소비량을 나타냄을 알 수 있다. 따라서, 본 발명의 메모리 접합 장치(1)은 기존의 메모리 접합 장치(1)에 비하여 에너지 소비면에서 향상된 성능을 가지고 있을 알 수 있다.According to Figure 7b, the execution time of GhostLeg-ND and GhostLeg-Key, which are memory bonding devices 1 according to different embodiments of the present invention, shows significantly reduced energy consumption compared to other memory bonding devices 1. You can. Therefore, it can be seen that the memory bonding device 1 of the present invention has improved performance in terms of energy consumption compared to the existing memory bonding device 1.

도 8을 참조하여 본 발명의 메모리 접합 방법에 관하여 설명하도록 한다.The memory bonding method of the present invention will be described with reference to FIG. 8.

도 8은 일 실시예에 따른 본 발명의 메모리 접합 방법의 순서도이다.Figure 8 is a flow chart of the memory bonding method of the present invention according to one embodiment.

본 발명의 메모리 접합 방법은 메모리 읽기 명령어를 외부 공격에 대한 취약 여부에 따라 ND-load 혹은 D-load로 분류하는 분류 단계(S110)를 포함할 수 있다. 또한, 메모리 접합 방법은 메모리 읽기 명령어에 따라 메모리 요청을 생성하는 메모리 요청 생성 단계(S120)를 포함할 수 있다. 또한, 메모리 접합 방법은 생성된 메모리 요청을 접합하는 접합 단계(S130)를 포함할 수 있다. 또한, 메모리 접합 방법은 메모리 읽기 명령어가 ND-load로 분류된 경우, 더미 메모리 요청을 생성하는 더미 생성 단계를 포함할 수 있다.The memory bonding method of the present invention may include a classification step (S110) in which memory read commands are classified into ND-load or D-load depending on whether they are vulnerable to external attacks. Additionally, the memory bonding method may include a memory request generation step (S120) of generating a memory request according to a memory read command. Additionally, the memory splicing method may include a splicing step (S130) of splicing the generated memory request. Additionally, the memory joining method may include a dummy generation step of generating a dummy memory request when the memory read command is classified as ND-load.

또한, 분류 단계는 메모리 읽기 명령어의 의존적 인덱스 포함 여부에 따라 취약 여부를 결정하는 것을 특징으로 할 수 있다.Additionally, the classification step may be characterized by determining vulnerability depending on whether the memory read command includes a dependent index.

또한, 분류 단계는 메모리 읽기 명령어가 사용자 의존적 인덱스를 포함하고 있으면 공격에 취약한 메모리 읽기 명령어(ND-load)로 분류하고, 시스템 의존적 인덱스를 포함하고 있으면 취약하지 않은 메모리 읽기 명령어로 분류하는 것을 특징으로 할 수 있다.Additionally, in the classification step, if a memory read command contains a user-dependent index, it is classified as a memory read command (ND-load) vulnerable to attack, and if it contains a system-dependent index, it is classified as a non-vulnerable memory read command. can do.

또한, 메모리 접합 방법은 사용자가 복수의 메모리 영역을 직접 지정하고, 메모리 영역을 메모리 읽기 명령어가 포함하는지 여부에 따라 분류 단계에서 공격에 대한 취약 여부를 결정하도록 설정하고, 분류 단계는 메모리 읽기 명령어가 사용자가 지정한 메모리 영역을 포함하는 경우, 이를 설정에 따라 공격에 취약한 메모리 읽기 명령어(ND-load) 혹은 공격에 취약하지 않은 읽기 명령어로 분류하는 것을 특징으로 할 수 있다.In addition, the memory splicing method allows the user to directly specify multiple memory areas and determine whether the memory area is vulnerable to attack in the classification stage depending on whether the memory area is included in the memory read command. If it includes a memory area designated by the user, it can be classified into a memory read command (ND-load) that is vulnerable to attack or a read command that is not vulnerable to attack, depending on the setting.

또한, 레지스터(400) 및 각 비트(310)들이 레지스터에 할당되고, false로 초기화된 상태의 보안 비트 테이블(300)을 더 포함하여, 메모리 요청에 따라 가져온 데이터를 레지스터에 저장할 때, 데이터가 특정 메모리 영역으로부터 가져온 것이면, 레지스터에 할당된 비트(310)의 값을 true로 변경하고, 분류 단계는, 메모리 요청이 접근하는 레지스터에 할당된 비트(310)의 값이 true인지 false인지에 따라 메모리 읽기 명령어의 공격에 대한 취약 여부를 결정하는 것을 특징으로 할 수 있다.In addition, the register 400 and each bit 310 are allocated to the register, and further include a security bit table 300 initialized to false, so that when data retrieved according to a memory request is stored in the register, the data is If it is from a memory area, the value of bit 310 assigned to the register is changed to true, and the classification step reads the memory depending on whether the value of bit 310 assigned to the register accessed by the memory request is true or false. It may be characterized by determining whether the command is vulnerable to attack.

또한, 더미 생성 단계는, 메모리 읽기 명령어가 공격에 취약한 메모리 읽기 명령어(ND-load)로 분류된 경우, 더미 메모리 요청을 생성하는 것을 특징으로 할 수 있다.Additionally, the dummy creation step may be characterized by generating a dummy memory request when the memory read command is classified as a memory read command (ND-load) vulnerable to attack.

또한, 더미 생성 단계는 더미 메모리 요청 및 접합기(210)에서 접합된 메모리 요청의 수의 합이 항상 기설정한 개수가 되도록 하는 수만큼 더미 메모리 요청을 생성하는 것을 특징으로 할 수 있다.Additionally, the dummy generation step may be characterized by generating a number of dummy memory requests such that the sum of the dummy memory requests and the number of memory requests spliced by the splicer 210 always reaches a preset number.

또한, 더미 생성 단계는 메모리 요청들의 기존 주소값들의 범위 안에서 겹치지 않는 주소값을 순차적으로 사용하여 더미 메모리 요청의 주소로 설정하는 것을 특징으로 할 수 있다.Additionally, the dummy creation step may be characterized by sequentially using address values that do not overlap within the range of existing address values of memory requests and setting them as the address of the dummy memory request.

또한, 더미 생성 단계는 메모리 요청들의 기존 주소값들의 범위 내에 더미 메모리 요청에 할당할 주소가 충분하지 않을 경우, 기존 주소값들에 인접한 주소를 더미 메모리 요청의 주소로 설정하는 것을 특징으로 할 수 있다.In addition, the dummy creation step may be characterized by setting an address adjacent to the existing address values as the address of the dummy memory request when there are not enough addresses to be assigned to the dummy memory request within the range of existing address values of the memory requests. .

본원 발명의 실시예 들과 관련된 기술 분야에서 통상의 지식을 가진 자는 상기 기재의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로, 개시된 방법들은 한정적인 관점이 아닌 설명적 관점에서 고려되어야 한다. 본 발명의 범위는 발명의 상세한 설명이 아닌 특허청구 범위에 나타나며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명의 범위에 포함되는 것으로 해석되어야 한다.Those skilled in the art related to the embodiments of the present invention will understand that the above-described material may be implemented in a modified form without departing from its essential characteristics. Therefore, the disclosed methods should be considered from an illustrative rather than a restrictive perspective. The scope of the present invention is indicated in the claims, not the detailed description of the invention, and all differences within the equivalent scope should be construed as being included in the scope of the present invention.

1: 메모리 접합 장치
100: 분류기
200: LSU
210: 접합기
230: 더미 생성기
250: 메모리 요청 대기열
270: AGU
300: 보안 비트 테이블
310: 비트
400: 레지스터
1: Memory bonding device
100: Sorter
200: LSU
210: adapter
230: Dummy Generator
250: Memory request queue
270:AGU
300: Security bit table
310: bit
400: register

Claims (16)

GPU에서의 선별적 메모리 접합 장치에 관한 것으로,
메모리 읽기 명령어가 외부 공격에 취약한 사용자 의존적 명령어이면 ND-load로, 외부 공격에 취약하지 않은 시스템 의존적 명령어이면 D-load로 분류하는 분류기;
상기 메모리 읽기 명령어에 따라 메모리 요청을 생성하는 LSU(load/store unit);
생성된 상기 메모리 요청을 접합하는 접합기; 및
상기 메모리 읽기 명령어가 상기 ND-load로 분류된 경우, 더미 메모리 요청을 생성하는 더미 생성기;
를 포함하는 메모리 접합 장치.
Regarding a selective memory bonding device in GPU,
A classifier that classifies the memory read command as ND-load if it is a user-dependent command that is vulnerable to external attacks, and as D-load if it is a system-dependent command that is not vulnerable to external attacks;
a load/store unit (LSU) that generates a memory request according to the memory read command;
a joiner that joins the generated memory requests; and
a dummy generator that generates a dummy memory request when the memory read command is classified as the ND-load;
A memory bonding device comprising:
제1항에 있어서,
상기 분류기는,
상기 메모리 읽기 명령어의 의존적 인덱스 포함 여부에 따라 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 하는 메모리 접합 장치.
According to paragraph 1,
The classifier is,
A memory joining device characterized in that it is classified into the ND-load or the D-load depending on whether the memory read command includes a dependent index.
제2항에 있어서,
상기 분류기는,
상기 메모리 읽기 명령어가 사용자 의존적 인덱스를 포함하고 있으면 상기 ND-load로 분류하고, 시스템 의존적 인덱스를 포함하고 있으면 상기 D-load로 분류하는 것을 특징으로 하는 메모리 접합 장치.
According to paragraph 2,
The classifier is,
A memory bonding device characterized in that if the memory read command includes a user-dependent index, it is classified as the ND-load, and if it includes a system-dependent index, it is classified as the D-load.
제1항에 있어서,
사용자가 복수의 메모리 영역을 직접 지정하고, 상기 메모리 영역을 상기 메모리 읽기 명령어가 포함하는지 여부에 따라 상기 분류기가 상기 ND-load 혹은 상기 D-load로 분류하도록 설정하고,
상기 분류기는,
상기 메모리 읽기 명령어가 상기 사용자가 지정한 상기 메모리 영역을 포함하는 경우, 이를 상기 설정에 따라 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 하는 메모리 접합 장치.
According to paragraph 1,
The user directly specifies a plurality of memory areas and sets the classifier to classify the memory areas into the ND-load or the D-load depending on whether the memory area is included in the memory read command,
The classifier is,
When the memory read command includes the memory area designated by the user, the memory bonding device is classified as the ND-load or the D-load according to the setting.
제1항에 있어서,
레지스터; 및
각 비트들이 상기 레지스터에 할당되고, false로 초기화된 상태의 보안 비트 테이블; 을 더 포함하여,
상기 메모리 요청에 따라 가져온 데이터를 상기 레지스터에 저장할 때, 상기 데이터가 특정 메모리 영역으로부터 가져온 것이면, 상기 레지스터에 할당된 상기 비트의 값을 true로 변경하고,
상기 분류기는,
상기 메모리 요청이 접근하는 상기 레지스터에 할당된 상기 비트의 값이 true인지 false인지에 따라 상기 메모리 읽기 명령어를 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 하는 메모리 접합 장치.
According to paragraph 1,
register; and
a security bit table in which each bit is allocated to the register and initialized to false; Including further,
When storing data retrieved according to the memory request in the register, if the data is retrieved from a specific memory area, change the value of the bit assigned to the register to true,
The classifier is,
A memory bonding device characterized in that the memory read command is classified as the ND-load or the D-load depending on whether the value of the bit allocated to the register accessed by the memory request is true or false.
제1항에 있어서,
상기 더미 생성기는,
상기 더미 메모리 요청 및 상기 접합기에서 접합된 메모리 요청의 수의 합이 항상 기설정한 개수가 되도록 하는 수만큼 더미 메모리 요청을 생성하는 것을 특징으로 하는 메모리 접합 장치.
According to paragraph 1,
The dummy generator is,
A memory splicing device characterized in that it generates a number of dummy memory requests such that the sum of the number of the dummy memory requests and the number of memory requests spliced by the splicer is always a preset number.
제6항에 있어서,
상기 더미 생성기는,
상기 메모리 요청들의 기존 주소값들의 범위 안에서 겹치지 않는 주소값을 순차적으로 사용하여 상기 더미 메모리 요청의 주소로 설정하는 것을 특징으로 하는 메모리 접합 장치.
According to clause 6,
The dummy generator is,
A memory joining device, characterized in that sequentially using address values that do not overlap within the range of existing address values of the memory requests and setting them as the address of the dummy memory request.
제7항에 있어서,
상기 더미 생성기는,
상기 메모리 요청들의 상기 기존 주소값들의 범위 내에 상기 더미 메모리 요청에 할당할 주소가 충분하지 않을 경우, 상기 기존 주소값들에 인접한 주소를 상기 더미 메모리 요청의 주소로 설정하는 것을 특징으로 하는 메모리 접합 장치.
In clause 7,
The dummy generator is,
If there are not enough addresses to be assigned to the dummy memory request within the range of the existing address values of the memory requests, a memory bonding device that sets an address adjacent to the existing address values as the address of the dummy memory request. .
GPU에서의 선별적 메모리 접합 방법에 관한 것으로,
메모리 읽기 명령어가 외부 공격에 취약한 사용자 의존적 명령어이면 ND-load로, 외부 공격에 취약하지 않은 시스템 의존적 명령어이면 D-load로 분류하는 분류 단계;
상기 메모리 읽기 명령어에 따라 메모리 요청을 생성하는 메모리 요청 생성 단계;
생성된 상기 메모리 요청을 접합하는 접합 단계; 및
상기 메모리 읽기 명령어가 상기 ND-load로 분류된 경우, 더미 메모리 요청을 생성하는 더미 생성 단계;
를 포함하는 메모리 접합 방법.
Concerning a selective memory bonding method in GPU,
A classification step where the memory read command is classified as ND-load if it is a user-dependent command that is vulnerable to external attacks, and as D-load if it is a system-dependent command that is not vulnerable to external attacks;
A memory request generation step of generating a memory request according to the memory read command;
A splicing step of splicing the generated memory requests; and
a dummy generation step of generating a dummy memory request when the memory read command is classified as ND-load;
A memory splicing method comprising:
제9항에 있어서,
상기 분류 단계는,
상기 메모리 읽기 명령어의 의존적 인덱스 포함 여부에 따라 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 하는 메모리 접합 방법.
According to clause 9,
The classification step is,
A memory splicing method characterized in that it is classified into the ND-load or the D-load depending on whether the memory read command includes a dependent index.
제10항에 있어서,
상기 분류 단계는,
상기 메모리 읽기 명령어가 사용자 의존적 인덱스를 포함하고 있으면 상기 ND-load로 분류하고, 시스템 의존적 인덱스를 포함하고 있으면 상기 D-load로 분류하는 것을 특징으로 하는 메모리 접합 방법.
According to clause 10,
The classification step is,
A memory joining method, characterized in that if the memory read command includes a user-dependent index, it is classified as the ND-load, and if it includes a system-dependent index, it is classified as the D-load.
제9항에 있어서,
사용자가 복수의 메모리 영역을 직접 지정하고, 상기 메모리 영역을 상기 메모리 읽기 명령어가 포함하는지 여부에 따라 상기 분류 단계에서 상기 ND-load 혹은 상기 D-load로 분류하도록 설정하는 단계를 더 포함하고,
상기 분류 단계는,
상기 메모리 읽기 명령어가 상기 사용자가 지정한 상기 메모리 영역을 포함하는 경우, 이를 상기 설정에 따라 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 하는 메모리 접합 방법.
According to clause 9,
It further includes a step of allowing the user to directly designate a plurality of memory areas and classifying the memory areas into the ND-load or the D-load in the classification step depending on whether the memory area includes the memory read command,
The classification step is,
A memory splicing method characterized in that, when the memory read command includes the memory area designated by the user, it is classified into the ND-load or the D-load according to the setting.
제9항에 있어서,
레지스터 및
각 비트들이 상기 레지스터에 할당되고, false로 초기화된 상태의 보안 비트 테이블을 더 포함하여,
상기 메모리 요청에 따라 가져온 데이터를 상기 레지스터에 저장할 때, 상기 데이터가 특정 메모리 영역으로부터 가져온 것이면, 상기 레지스터에 할당된 상기 비트의 값을 true로 변경하고,
상기 분류 단계는,
상기 메모리 요청이 접근하는 상기 레지스터에 할당된 상기 비트의 값이 true인지 false인지에 따라 상기 메모리 읽기 명령어를 상기 ND-load 혹은 상기 D-load로 분류하는 것을 특징으로 하는 메모리 접합 방법.
According to clause 9,
register and
Each bit is allocated to the register, and further includes a security bit table initialized to false,
When storing data retrieved according to the memory request in the register, if the data is retrieved from a specific memory area, change the value of the bit assigned to the register to true,
The classification step is,
A memory bonding method characterized in that the memory read command is classified as the ND-load or the D-load depending on whether the value of the bit allocated to the register accessed by the memory request is true or false.
제9항에 있어서,
상기 더미 생성 단계는,
상기 더미 메모리 요청 및 상기 접합 단계에서 접합된 메모리 요청의 수의 합이 항상 기설정한 개수가 되도록 하는 수만큼 더미 메모리 요청을 생성하는 것을 특징으로 하는 메모리 접합 방법.
According to clause 9,
The dummy creation step is,
A memory splicing method, characterized in that generating a number of dummy memory requests such that the sum of the number of the dummy memory requests and the number of memory requests spliced in the splicing step is always a preset number.
제14항에 있어서,
상기 더미 생성 단계는,
상기 메모리 요청들의 기존 주소값들의 범위 안에서 겹치지 않는 주소값을 순차적으로 사용하여 상기 더미 메모리 요청의 주소로 설정하는 것을 특징으로 하는 메모리 접합 방법.
According to clause 14,
The dummy creation step is,
A memory splicing method characterized by sequentially using address values that do not overlap within the range of existing address values of the memory requests and setting them as the address of the dummy memory request.
제15항에 있어서,
상기 더미 생성 단계는,
상기 메모리 요청들의 상기 기존 주소값들의 범위 내에 상기 더미 메모리 요청에 할당할 주소가 충분하지 않을 경우, 상기 기존 주소값들에 인접한 주소를 상기 더미 메모리 요청의 주소로 설정하는 것을 특징으로 하는 메모리 접합 방법.
According to clause 15,
The dummy creation step is,
When there are not enough addresses to be assigned to the dummy memory request within the range of the existing address values of the memory requests, a memory joining method is set to an address adjacent to the existing address values as the address of the dummy memory request. .
KR1020230040139A 2022-12-30 2023-03-28 Selective memory coalescing device and method according to a class of load instruction KR102617678B1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20220190281 2022-12-30
KR1020220190281 2022-12-30

Publications (1)

Publication Number Publication Date
KR102617678B1 true KR102617678B1 (en) 2023-12-27

Family

ID=89377696

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020230040139A KR102617678B1 (en) 2022-12-30 2023-03-28 Selective memory coalescing device and method according to a class of load instruction

Country Status (1)

Country Link
KR (1) KR102617678B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030034463A (en) * 2001-10-23 2003-05-09 주식회사 하이닉스반도체 A merged memory logic device
KR20130070501A (en) * 2011-12-19 2013-06-27 인텔 코포레이션 Techniques for memory de-duplication in a virtual system
KR20190031683A (en) * 2017-09-18 2019-03-27 에스케이하이닉스 주식회사 Memory system and operating method of memory system
US20190220283A1 (en) * 2006-09-29 2019-07-18 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20030034463A (en) * 2001-10-23 2003-05-09 주식회사 하이닉스반도체 A merged memory logic device
US20190220283A1 (en) * 2006-09-29 2019-07-18 Arm Finance Overseas Limited Load/store unit for a processor, and applications thereof
KR20130070501A (en) * 2011-12-19 2013-06-27 인텔 코포레이션 Techniques for memory de-duplication in a virtual system
KR20190031683A (en) * 2017-09-18 2019-03-27 에스케이하이닉스 주식회사 Memory system and operating method of memory system

Similar Documents

Publication Publication Date Title
JP6652491B2 (en) Area specifying operation for specifying the area of the memory attribute unit corresponding to the target memory address
US6272612B1 (en) Process for allocating memory in a multiprocessor data processing system
TWI835856B (en) Apparatus, method, computer program, and computer-readable storage medium for range checking instruction
US20180129525A1 (en) Computing system for securely executing a secure application in a rich execution environment
JP5179257B2 (en) Modification of control data in cache memory
US10261796B2 (en) Processor and method for executing in-memory copy instructions indicating on-chip or off-chip memory
US5481688A (en) Information processing system having an address translation table loaded with main/expanded memory presence bits
US5257353A (en) I/O control system having a plurality of access enabling bits for controlling access to selective parts of an I/O device
US20040158691A1 (en) Loop handling for single instruction multiple datapath processor architectures
US10509666B2 (en) Register partition and protection for virtualized processing device
US9436450B2 (en) Method and apparatus for optimising computer program code
US11307784B2 (en) Method and apparatus for storing memory attributes
US5146565A (en) I/O Control system having a plurality of access enabling bits for controlling access to selective ports of an I/O device
KR20200021516A (en) Apparatus and method for controlling the execution of instructions
CN115237599B (en) Rendering task processing method and device
US8751724B2 (en) Dynamic memory reconfiguration to delay performance overhead
US20100030967A1 (en) Method and system for securing instruction caches using substantially random instruction mapping scheme
KR102617678B1 (en) Selective memory coalescing device and method according to a class of load instruction
JP2005209206A (en) Data transfer method for multiprocessor system, multiprocessor system, and processor for executing the method
US20080168552A1 (en) Using trusted user space pages as kernel data pages
US20190266694A1 (en) Graphics processing method utilizing predefined render chunks
CN108139909B (en) Memory access instructions
JPH01187650A (en) Buffer storage device
CN116635841A (en) Near memory determination of registers
Kaler Cache efficient bloom filters for shared memory machines

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant