뱅크 별 비동기 실행에 기반한 PIM 및 이의 동작 방법
Processing-In-Memory based on Bank-Level Asynchronous Execution and Method of Operation Thereof
특허 요약
본 개시는 곱셈 연산의 대상이 되는 행렬에서 분할된 둘 이상의 열이 각각 저장되는 다수의 뱅크, 행렬과 곱셈 연산되어야 하는 열 벡터가 각 뱅크에 저장된 열의 개수에 따라 둘 이상의 원소씩 구분되어 분할된 입력 벡터를 인가받고, 입력 벡터의 각 원소와 대응하는 뱅크에 저장된 각 열을 곱셈하여 둘 이상의 중간 연산 벡터를 각각 획득하는 다수의 PU 및 다수의 PU 각각에서 둘 이상씩 획득된 중간 연산 벡터를 인가받아 누적 가산하여 연산 결과 벡터를 획득하는 적어도 하나의 공유 가산기를 포함하여, 동기 명령인 전체 뱅크 명령 대신 실행 시간이 길고 로컬 영역에서 실행되는 비동기 명령인 롱앤 로컬 명령을 활용하여 PIM의 연산 효율성을 향상시킬 수 있는 PIM 및 이의 동작 방법을 제공한다.
청구항
번호청구항
8

제1항에 있어서, 상기 다수의 뱅크는 일정 개수 단위로 구분되어 다수의 뱅크 그룹을 형성하는 PIM.

9

제8항에 있어서, 상기 행렬의 다수의 열은 단일 뱅크 그룹 내의 다수의 뱅크에 분산 저장되는 PIM.

10

제8항에 있어서, 상기 적어도 하나의 공유 가산기는 다수의 뱅크 그룹에 각각에 포함된 PU가 액세스 할 수 있도록 각 뱅크 그룹별로 하나씩 형성되는 PIM.

7

제1항에 있어서, 상기 다수의 뱅크는 상기 행렬에서 분할된 각각의 열이 행 방향으로 배열된 메모리 셀에 저장되는 PIM.

1

PIM 컨트롤러에 의해 제어되는 장치로서, 곱셈 연산의 대상이 되는 행렬에서 분할된 둘 이상의 열이 각각 저장되는 다수의 뱅크; 상기 행렬과 곱셈 연산되어야 하는 열 벡터가 각 뱅크에 저장된 열의 개수에 따라 둘 이상의 원소씩 구분되어 분할된 입력 벡터를 인가받고, 상기 입력 벡터의 각 원소와 대응하는 뱅크에 저장된 각 열을 곱셈하여 둘 이상의 중간 연산 벡터를 각각 획득하는 다수의 PU; 및 상기 다수의 PU 각각에서 둘 이상씩 획득된 중간 연산 벡터를 인가받아 누적 가산하여 연산 결과 벡터를 획득하는 적어도 하나의 공유 가산기를 포함하는 PIM.

2

제1항에 있어서, 상기 PU는 상기 입력 벡터를 인가받아 저장하는 버퍼와 상기 버퍼에 저장된 입력 벡터의 원소와 대응하는 뱅크에서 로드된 하나의 열을 곱셈하여 하나의 중간 연산 벡터를 획득하는 곱셈기를 포함하는 PIM.

3

제1항에 있어서, 상기 PU는 상기 PIM 컨트롤러에서 인가되는 하나의 롱앤 로컬 명령에 따라, 대응하는 뱅크에 저장된 다수의 열과 상기 입력 벡터의 전체 원소와 순차적으로 인가받고, 순차적으로 인가된 열과 원소에 대한 곱셈 연산을 반복하여 수행하는 PIM.

4

제1항에 있어서, 상기 PU는 상기 PIM 컨트롤러로부터 다수의 뱅크 각각에 대해 비동기적으로 인가되는 롱앤 로컬 명령에 따라, 다른 PU와 무관하게 독립적으로 대응하는 뱅크에 저장된 다수의 열과 상기 입력 벡터의 다수의 원소 사이의 곱셈 연산을 수행하는 PIM.

5

제4항에 있어서, 상기 다수의 뱅크는 개별 뱅크 명령인 활성화 명령에 응답하여 개별적으로 활성화되고, 상기 롱앤 로컬 명령에 따라 저장된 다수의 열을 순차적으로 대응하는 PU로 전달하는 PIM.

6

제1항에 있어서, 상기 공유 가산기는 상기 다수의 PU가 공통으로 액세스 가능한 공유 영역에 형성되는 PIM.

11

PIM 컨트롤러에 의해 제어되는 PIM의 동작 방법으로서, 곱셈 연산의 대상이 되는 행렬에서 분할된 둘 이상의 열이 상기 PIM에 포함된 다수의 뱅크에 분산 저장되는 단계; 상기 행렬과 곱셈 연산되어야 하는 열 벡터가 각 뱅크에 저장된 열의 개수에 따라 둘 이상의 원소씩 구분되어 분할된 다수의 입력 벡터가 상기 PIM에서 각 뱅크에 대응하여 구비된 다수의 PU에 인가되는 단계; 상기 다수의 PU가 각각 상기 입력 벡터의 각 원소와 대응하는 뱅크에 저장된 각 열을 곱셈하여 둘 이상의 중간 연산 벡터를 획득하는 단계; 및 적어도 하나의 공유 가산기가 상기 다수의 PU 각각에서 둘 이상씩 획득된 중간 연산 벡터를 인가받아 누적 가산하여 연산 결과 벡터를 획득하는 단계를 포함하는 PIM의 동작 방법.

12

제11항에 있어서, 상기 중간 연산 벡터를 획득하는 단계는 상기 PIM 컨트롤러에서 인가되는 하나의 롱앤 로컬 명령에 따라, 저장된 상기 입력 벡터의 하나의 원소와 상기 뱅크에서 로드된 하나의 열을 곱셈하여 하나의 중간 연산 벡터를 획득하는 과정을 반복 수행하는 PIM의 동작 방법.

13

제11항에 있어서, 상기 중간 연산 벡터를 획득하는 단계는 상기 PIM 컨트롤러로부터 다수의 뱅크 각각에 대해 비동기적으로 인가되는 롱앤 로컬 명령에 따라, 다른 PU와 무관하게 독립적으로 대응하는 뱅크에 저장된 다수의 열과 상기 입력 벡터의 다수의 원소 사이의 곱셈 연산을 수행하는 PIM의 동작 방법.

14

제13항에 있어서, 상기 다수의 PU에 인가되는 단계는 개별 뱅크 명령인 활성화 명령에 응답하여 개별적으로 활성화된 뱅크 각각이 상기 롱앤 로컬 명령에 따라 저장된 다수의 열을 순차적으로 대응하는 PU로 전달하는 PIM의 동작 방법.

15

제11항에 있어서, 상기 연산 결과 벡터를 획득하는 단계는 상기 다수의 PU 각각이 상기 다수의 PU가 공통으로 액세스 가능한 공유 영역에 형성된 공유 가산기로 획득된 둘 이상의 중간 연산 벡터를 전달하고, 상기 공유 가산기는 전달된 모든 중간 연산 벡터를 누적 가산하는 PIM의 동작 방법.

16

제11항에 있어서, 상기 뱅크에 분산 저장되는 단계는 상기 행렬에서 분할된 각각의 열이 각 뱅크의 행 방향으로 배열된 메모리 셀에 저장되는 PIM의 동작 방법.

17

제11항에 있어서, 상기 뱅크에 분산 저장되는 단계는 상기 다수의 뱅크가 일정 개수 단위로 구분되어 형성된 다수의 뱅크 그룹 중 하나의 뱅크 그룹에 포함되는 뱅크에 상기 행렬의 다수의 열이 분산 저장되는 PIM의 동작 방법.

18

제17항에 있어서, 상기 연산 결과 벡터를 획득하는 단계는 다수의 뱅크 그룹에 각각에 포함된 PU가 각 뱅크에 하나씩 형성된 공유 가산기로 상기 둘 이상의 중간 연산 벡터를 전달하는 PIM의 동작 방법.