Search

KR-102960024-B1 - OPERAND-LESS INSTRUCTION SET PROCESSOR AND COMPUTER HAVING THE SAME

KR102960024B1KR 102960024 B1KR102960024 B1KR 102960024B1KR-102960024-B1

Abstract

연산성능을 유지하는 구조를 갖고서 최소 로직 게이트로 구성된 오퍼랜드리스 인스트럭션 체계 기반 프로세서 및 이를 포함하는 컴퓨터가 개시된다. 오퍼랜드리스 인스트럭션 체계 기반 프로세서는, 프로그램의 인스트럭션을 처리하되, 데이터 수발을 위한 인스트럭션 외에는 오퍼랜드가 없는 인퍼랜드리스 인스트럭션으로 구성된 인스트럭션을 처리하는 인스트럭션 프로세싱 유닛; 데이터 처리를 위한 복수의 기능들을 수행하는 하나 이상의 기능 프로세싱 유닛; 및 상기 인스트럭션 프로세싱 유닛에 의한 인스트럭션 프로세싱과 상기 기능 프로세싱 유닛에 의한 데이터 프로세싱을 분리하는 스택 레지스터를 포함한다. 이에 따라, 오퍼랜드를 포함하지 않는 단순한 인스트럭션 세트를 사용하여 로직 게이트의 수를 최소화하고, 높은 효율성을 유지할 수 있다. 또한 로직 게이트의 수가 줄어들면 전력 소비와 열 발생을 줄일 수 있다. 또한 적은 로직 게이트를 요구하므로 동일 규모의 반도체 다이에 더 많은 프로세서 코어를 집적할 수 있어 성능 개선으로 기대할 수 있다.

Inventors

  • 이동학

Assignees

  • 주식회사 코코링크

Dates

Publication Date
20260506
Application Date
20241008

Claims (20)

  1. 프로그램의 인스트럭션을 처리하되, 데이터 수발을 위한 인스트럭션 외에는 오퍼랜드가 없는 인퍼랜드리스 인스트럭션으로 구성된 인스트럭션을 처리하는 인스트럭션 프로세싱 유닛; 연산 기능을 갖는 산술논리연산장치(ALU)에 대응하는 제1 기능 프로세싱 모듈과, 콘트롤 기능을 갖는 컨트롤 장치에 대응하는 제2 기능 프로세싱 모듈을 포함하여, 데이터 처리를 위한 복수의 기능들을 수행하는 하나 이상의 기능 프로세싱 유닛; 및 상기 제1 기능 프로세싱 모듈이 억세스하는 ALU 레지스터와, 상기 제2 기능 프로세싱 모듈의 스태커가 억세스하는 기능 프로세싱 유닛(Function Processing Unit, 이하 FPU) 스택을 포함하여, 상기 인스트럭션 프로세싱 유닛에 의한 인스트럭션 프로세싱과 상기 기능 프로세싱 유닛에 의한 데이터 프로세싱을 분리하는 스택 레지스터를 포함하되, 상기 제1 기능 프로세싱 모듈은 산술논리연산 인스트럭션을 이용하여 상기 ALU 레지스터에 대해 데이터의 읽기, 쓰기 및 수정의 처리를 수행하고, 상기 제2 기능 프로세싱 모듈은 상기 FPU 스택에 대해 데이터의 읽기, 쓰기 및 수정의 처리를 수행하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  2. 제1항에 있어서, 상기 인스트럭션 프로세싱 유닛은, 현재 실행 중인 인스트럭션의 메모리 주소를 저장하고, 프로그램의 흐름을 제어하며, 다음 실행할 인스트럭션의 주소를 지정하고, 인스트럭션이 실행될 때마다 프로그램 카운터 값을 증가시켜 다음 인스트럭션을 가리키는 프로그램 카운터; 외부의 인스트럭션 메모리에서 인스트럭션을 읽어오는 인스트럭션 로더; 상기 인스트럭션 로더에 의해 로드된 인스트럭션을 저장하고, 연속적인 인스트럭션 프로세싱을 지원하고, 인스트럭션이 필요할 때 빠르게 접근할 수 있도록 하는 인스트럭션 큐; 및 상기 프로그램 카운터, 상기 인스트럭션 큐 및 상기 기능 프로세싱 유닛에 각각 연결된 인스트럭션 프로세서를 포함하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  3. 제2항에 있어서, 상기 프로그램 카운터는 상기 인스트럭션 큐의 내용에 따라 카운터를 증가시켜 다음 인스트럭션의 주소를 추적하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  4. 제2항에 있어서, 상기 인스트럭션 큐는 바이트 단위로 조작되며, 인스트럭션이 오퍼랜드가 없는 경우에는 1 바이트만을, 오퍼랜드가 있는 경우에는 3~4 바이트를 포함하여 인스트럭션을 저장하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  5. 제2항에 있어서, 상기 인스트럭션 프로세서는, 상기 인스트럭션 큐에서 인스트럭션을 읽어와 상기 기능 프로세싱 유닛에 제공하는 인스트럭션 페쳐; 인스트럭션을 해석하여 실행 가능한 형태로 변환하는 인스트럭션 분해기; 및 상기 기능 프로세싱 유닛 내의 기능 모듈을 가동하는 기능 선택기를 포함하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  6. 제5항에 있어서, 상기 인스트럭션 분해기는 오퍼랜드가 없는 인스트럭션을 1 바이트로 처리하고, 오퍼랜드가 있는 인스트럭션에는 추가 바이트를 포함하여 전체 인스트럭션을 구성하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  7. 삭제
  8. 삭제
  9. 제1항에 있어서, 상기 FPU 스택은, 스태커가 억세스하는 레지스터 스택; 및 ALU가 운영하는 연산전용 레지스터를 포함하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  10. 제9항에 있어서, 상기 연산전용 레지스터는, 입력 자료인 제1 오퍼랜드를 저장하는 제1 직접 접근 레지스터; 입력 자료인 제2 오퍼랜드를 저장하는 제2 직접 접근 레지스터; 및 연산의 결과를 저장하는 결과 저장 레지스터를 포함하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  11. 제10항에 있어서, 상기 제1 직접 접근 레지스터가 상기 레지스터 스택의 최상위로, 상기 제2 직접 접근 레지스터가 상기 레지스터 스택의 차상위와 동기화 또는 동일 소자화하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  12. 제10항에 있어서, 상기 결과 저장 레지스터는 연산 작업이 완료된 뒤 결과값을 상기 레지스터 스택의 최상위에 놓는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 프로세서.
  13. 프로그램의 인스트럭션을 저장하는 인스트럭션 메모리; 상기 프로그램 실행 중 필요한 데이터를 저장하는 데이터 메모리; 및 상기 인스트럭션 메모리로부터 상기 프로그램의 인스트럭션을 읽어오고, 상기 데이터 메모리의 데이터를 수발하는 프로세서를 포함하되, 상기 프로세서는, 상기 프로그램의 인스트럭션을 처리하되, 데이터 수발을 위한 인스트럭션 외에는 오퍼랜드가 없는 인퍼랜드리스 인스트럭션으로 구성된 인스트럭션을 처리하는 인스트럭션 프로세싱 유닛; 연산 기능을 갖는 산술논리연산장치(ALU)에 대응하는 제1 기능 프로세싱 모듈과, 콘트롤 기능을 갖는 컨트롤 장치에 대응하는 제2 기능 프로세싱 모듈을 포함하여, 데이터 처리를 위한 복수의 기능들을 수행하는 하나 이상의 기능 프로세싱 유닛; 및 상기 제1 기능 프로세싱 모듈이 억세스하는 ALU 레지스터와, 상기 제2 기능 프로세싱 모듈의 스태커가 억세스하는 기능 프로세싱 유닛(Function Processing Unit, 이하 FPU) 스택을 포함하여, 상기 인스트럭션 프로세싱 유닛에 의한 인스트럭션 프로세싱과 상기 기능 프로세싱 유닛에 의한 데이터 프로세싱을 분리하는 스택 레지스터를 포함하되, 상기 제1 기능 프로세싱 모듈은 산술논리연산 인스트럭션을 이용하여 상기 ALU 레지스터에 대해 데이터의 읽기, 쓰기 및 수정의 처리를 수행하고, 상기 제2 기능 프로세싱 모듈은 상기 FPU 스택에 대해 데이터의 읽기, 쓰기 및 수정의 처리를 수행하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터.
  14. 제13항에 있어서, 상기 인스트럭션 프로세싱 유닛은, 현재 실행 중인 인스트럭션의 메모리 주소를 저장하고, 프로그램의 흐름을 제어하며, 다음 실행할 인스트럭션의 주소를 지정하고, 인스트럭션이 실행될 때마다 프로그램 카운터 값을 증가시켜 다음 인스트럭션을 가리키는 프로그램 카운터; 상기 인스트럭션 메모리에서 인스트럭션을 읽어오는 인스트럭션 로더; 상기 인스트럭션 로더에 의해 로드된 인스트럭션을 저장하고, 연속적인 인스트럭션 프로세싱을 지원하고, 인스트럭션이 필요할 때 빠르게 접근할 수 있도록 하는 인스트럭션 큐; 및 상기 프로그램 카운터, 상기 인스트럭션 큐 및 상기 기능 프로세싱 유닛에 각각 연결된 인스트럭션 프로세서를 포함하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터.
  15. 제14항에 있어서, 상기 프로그램 카운터는 상기 인스트럭션 큐의 내용에 따라 카운터를 증가시켜 다음 인스트럭션의 주소를 추적하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터.
  16. 제14항에 있어서, 상기 인스트럭션 큐는 바이트 단위로 조작되며, 인스트럭션이 오퍼랜드가 없는 경우에는 1 바이트만을, 오퍼랜드가 있는 경우에는 3~4 바이트를 포함하여 인스트럭션을 저장하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터.
  17. 제14항에 있어서, 상기 인스트럭션 프로세서는, 상기 인스트럭션 큐에서 인스트럭션을 읽어와 상기 기능 프로세싱 유닛에 제공하는 인스트럭션 페쳐; 인스트럭션을 해석하여 실행 가능한 형태로 변환하는 인스트럭션 분해기; 및 상기 기능 프로세싱 유닛 내의 기능 모듈을 가동하는 기능 선택기를 포함하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터.
  18. 삭제
  19. 삭제
  20. 제13항에 있어서, 상기 FPU 스택은, 스태커가 억세스하는 레지스터 스택; 및 ALU가 운영하는 연산전용 레지스터를 포함하는 것을 특징으로 하는 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터.

Description

오퍼랜드리스 인스트럭션 체계 기반 프로세서 및 이를 포함하는 컴퓨터{OPERAND-LESS INSTRUCTION SET PROCESSOR AND COMPUTER HAVING THE SAME} 본 발명은 오퍼랜드리스 인스트럭션 체계 기반 프로세서 및 이를 포함하는 컴퓨터에 관한 것으로, 보다 상세하게는 연산성능을 유지하는 구조를 갖고서 최소 로직 게이트로 구성된 오퍼랜드리스 인스트럭션 체계 기반 프로세서 및 이를 포함하는 컴퓨터에 관한 것이다. 최근의 컴퓨터 아키텍처는 AI 문제를 풀기 위하여 거대 매트릭스 연산으로 수렴되는 양상을 보인다. 특히, 텐서(Tensor) 연산이 비중을 압도적으로 키워가고 있다. 그러나 텐서 연산의 크게 비중이 높아지기는 했지만 텐서 연산 만으로 응용프로그램을 구축할 수는 없다. 프로그램을 구성하기 위해서는 다양한 연산 기능이 요구되며 텐서 연산의 비중이 압도적으로 클 뿐이다. AI 연산에서 컴퓨터 시스템의 성능을 극대화하는 항법으로 폰노이만식 컴퓨터 구조에서 메모리에 연산 기능을 추가하는 방법이 제시되었다. 복잡한 일반의 과학 공학 응용프로그램에서는 알고리즘이 복잡해져서 실효성이 크게 있을 것으로 판단되지 않으나 AI의 영역에서는 상당한 성능의 개선이 예상된다는 의견이 있고 이를 바탕으로 많은 기업과 연구소에서 메모리 영역에 연산 기능을 추가하는 시도가 이루어지고 있다. 메모리 영역에서 연산하는 방법은 메모리 안에서의 연산(PIM)과 메모리 근처에서의 연산(PNM)으로 나뉘는데 둘 다 중앙처리기(CPU)가 아닌 메모리에 연결되거나 포함된 별도의 연산장치(ALU)에서 연산을 수행한다. 이때, 일반적인 중앙처리기의 연산장치(ALU)를 그대로 활용하는 경우 메모리를 구성하는 회로에 추가적인 연산장치를 구성하는 회로를 갖추어야 해서 메모리의 복잡도가 지나치게 높아지는 문제가 생긴다. 그래서 현저히 축소된 기능의 연산장치를 구성하여 이를 적용한다. 이때, 기능성이 제한된 PIM/PNM 내의 연산장치는 활용성을 크게 제한받게 된다. 다양한 이유로 컴퓨터 시스템의 성능을 더욱 확대하고자 PIM/PNM을 적용하는데 실질적으로는 성능개선의 효과를 누리기가 쉽지 않다. 일반적으로 프로세서의 성능을 향상시키기 위하여 다양한 방법을 적용한다. 복잡한 인스트럭션 집합을 사용하거나 다수의 인스트럭션 파이프 라인이나 다중의 연산장치를 적용한다. 이는 회로의 복잡도를 지나치게 확대하므로 로직 게이트의 증가와 전력 소비와 열 발생의 확대로 이어진다. 이를 개선하기 위하여 회로의 선폭을 좁히는 방향으로 생산 기술이 발전해 왔으나, 10nm보다 선폭이 좁아지게 되는데 이는 절연구간의 누설 전류에 의한 새로운 열과 전력의 문제를 야기한다. 특히, 메모리 속에 위치하는 PIM 프로세서 코어의 경우에는 기능성을 크게 양보하여 인스트럭션을 최소화하였음에도 메모리에서의 발열에 더해지는 프로세서 코어의 발열로 성능의 정상화에 큰 문제가 된다. 이를 해결하기 위해, 필요한 인스트럭션을 최대한으로 유지하며 로직 게이트 수를 최소화하여 고효율과 저전력 소비를 달성할 수 있는 새로운 컴퓨터 기술이 필요한 실정이다. 도 1은 본 발명의 일 실시예에 따른 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터를 설명하기 위한 블록도이다. 도 2는 도 1에 도시된 인스트럭션 프로세싱 유닛의 구조를 설명하기 위한 도면이다. 도 3은 도 1 및 도 2에 도시된 기능 프로세싱 유닛의 구조를 설명하기 위한 도면이다. 도 4는 도 3에 도시된 스택 레지스터의 구조를 예시적으로 설명하기 위한 도면이다. 도 5는 FPU 스택 구조를 예시적으로 설명하기 위한 도면이다. 도 6은 다중의 기능 프로세싱 유닛을 적용하는 예를 설명하기 위한 도면이다. 도 7은 다중 및 다차원화의 기능 프로세싱 유닛의 적용을 예시적으로 설명하기 위한 도면이다. 도 8a 및 도 8b는 세부적인 인스트럭션의 형태를 설명하기 위한 도면들이다. 도 9는 인스트럭션 표를 설명하기 위한 도면이다. 아래에서는 첨부한 도면을 참조하여 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 본 발명의 실시예를 상세히 설명한다. 그러나 본 발명은 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시예에 한정되지 않는다. 그리고 도면에서 본 발명을 명확하게 설명하기 위해서 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다. 명세서 전체에서, 어떤 부분이 다른 부분과 "연결"되어 있다고 할 때, 이는 "직접적으로 연결"되어 있는 경우뿐 아니라, 그 중간에 다른 소자를 사이에 두고 "전기적으로 연결"되어 있는 경우도 포함한다. 또한 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있는 것을 의미하며, 하나 또는 그 이상의 다른 특징이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다. 명세서 전체에서 사용되는 정도의 용어 "약", "실질적으로" 등은 언급된 의미에 고유한 제조 및 물질 허용오차가 제시될 때 그 수치에서 또는 그 수치에 근접한 의미로 사용되고, 본 발명의 이해를 돕기 위해 정확하거나 절대적인 수치가 언급된 개시 내용을 비양심적인 침해자가 부당하게 이용하는 것을 방지하기 위해 사용된다. 본 발명의 명세서 전체에서 사용되는 정도의 용어 "~(하는) 단계" 또는 "~의 단계"는 "~ 를 위한 단계"를 의미하지 않는다. 본 명세서에 있어서 '부(部)'란, 하드웨어에 의해 실현되는 유닛(unit), 소프트웨어에 의해 실현되는 유닛, 양방을 이용하여 실현되는 유닛을 포함한다. 또한, 1 개의 유닛이 2 개 이상의 하드웨어를 이용하여 실현되어도 되고, 2 개 이상의 유닛이 1 개의 하드웨어에 의해 실현되어도 된다. 한편, '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니며, '~부'는 어드레싱 할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체 지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들 및 변수들을 포함한다. 구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로 더 분리될 수 있다. 뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU들을 재생시키도록 구현될 수도 있다. 본 명세서에 있어서 단말, 장치 또는 디바이스가 수행하는 것으로 기술된 동작이나 기능 중 일부는 해당 단말, 장치 또는 디바이스와 연결된 서버에서 대신 수행될 수도 있다. 이와 마찬가지로, 서버가 수행하는 것으로 기술된 동작이나 기능 중 일부도 해당 서버와 연결된 단말, 장치 또는 디바이스에서 수행될 수도 있다. 본 명세서에서 있어서, 단말과 매핑(Mapping) 또는 매칭(Matching)으로 기술된 동작이나 기능 중 일부는, 단말의 식별 정보(Identifying Data)인 단말기의 고유번호나 개인의 식별정보를 매핑 또는 매칭한다는 의미로 해석될 수 있다. 이하, 첨부된 도면들을 참고하여 본 발명을 상세히 설명하기로 한다. CISC(Complex Instruction Set Computer)나 RISC(Reduced Instruction Set Computer)와 같은 일반적인 프로세서는 성능개선을 위하여 다수의 레지스터와 다수의 인스트럭션 프로세싱 유닛, 연산기 등을 매우 복잡한 구조로 구성하는 형태로 추진되어 왔는데, 연산이나 인스트럭션 프로세싱이기의 늘린다고 그에 비례하여 성능이 개선되지 않는다. 아주 예외적인 경우에나 성능개선의 효과가 기대에 부응하고, 상당수의 경우에는 회로 복잡도의 증가에 비하여 성능개선은 미미하다. 본 발명에서는 동일 기능과 성능을 구현하는 최소 로직 게이트의 프로세서를 구성하는 방법을 제시한다. 프로세서의 구조를 연산성능을 유지하는 선에서 반도체 수의 최적화하는 방법으로 성능 고도화의 방법을 고안하였다. 본 발명은 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터(NOISC, Non-Operand Instruction Set Computer, Operand-less Instruction Set Computer)에 관한 것이다. 도 1은 본 발명의 일 실시예에 따른 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터를 설명하기 위한 블록도이다. 도 1을 참조하면, 본 발명의 일 실시예에 따른 오퍼랜드리스 인스트럭션 체계 기반 컴퓨터는 인스트럭션 메모리(100), 데이터 메모리(200) 및 프로세서(300)를 포함한다. 인스트럭션 메모리(100)는 프로그램의 인스트럭션, 예컨대, 프로세서(300)가 실행할 코드를 저장한다. 인스트럭션은 연산의 종류를 나타내는 명령 코드(operational code; opcode)와, 처리될 데이터 또는 데이터가 저장된 주소를 지정하는 오퍼랜드(operand)를 포함할 수 있다. 데이터 메모리(200)는 프로그램 실행 중 필요한 데이터, 예컨대, 변수, 배열, 객체 등의 정보를 저장한다. 프로세서(300)는 인스트럭션 프로세싱 유닛(Instruction Processing Unit, IPU)(310), 인스트럭션 프로세싱 유닛(310)에 연결된 기능 프로세싱 유닛(Function Processing Unit, FPU)(320), 기능 프로세싱 유닛(320)에 연결된 스택 레지스터(Stacked Register, SR)(330)를 포함하고, 인스트럭션 메모리(100)로부터 프로그램의 인스트럭션을 읽어오고, 데이터 메모리(200)의 데이터를 수발한다. 프로세서(300)는 인스트럭션 메모리(100)에서 인스트럭션을 읽어 올 때 주소를 사용한다. 프로세서(300)는 데이터 메모리(20