특허권

하드웨어 가속기를 포함하는 메인 메모리 및 메인 메모리의 동작 방법

상품번호 2020011014045030
IPC 한국(KO) 등록
출원번호 1020160033035
공개번호 10-2017-0108713
등록번호 1018472620000
출원인 연세대학교 산학협력단
판매가 0원
 

꼭 읽어보세요!

기술거래는 양방향 경매방식으로 이루어집니다.

기술을 매수한 당사자는 거래금액의 전부 혹은 10퍼센트(%)를 당일 본원에 입금하여야 하며, 10% 나머지 잔금은 거래일로부터 2일 이내(거래일 익일)에 납부하여야 합니다. 만약 위 지정 기간내에 매수자가 입금하지 않으면 거래는 무효가 되며, 잔금도 기한내에 입금되지 않으면 매도자로 귀속됩니다. 이는 매도자의 기한의 이익상실을 보장함 입니다.

기술거래의 수수료는 기술의 이전 및 사업화 촉진에 관한 법률 시행규칙 산업통상자원부령 제48호 의거 기술이전 금액의 13퍼센트∼기술이전 금액의 17.5퍼센트로 되어있지만, 본 거래사이트에서는 매도‧매수인 각각 10%로 합니다.
이때 매수인의 매수금액(당사로 입금되는 금액)에서 수수료 각각10% 인 20%를 공제한 후 매도인에게 계좌이체를 하여야 합니다.
또한 권리이전(특허)비용은 기술양수인(매수자)부담이며 그 비용은 별도입니다.

 
본 발명은 하드웨어 가속기의 속도를 향상시키고, 메모리의 공간을 절약하기 위한 기술적 사상에 관한 것으로서, 일측에 따른 컴퓨터에 의해 적어도 일시적으로 구현되는 메인 메모리는 메모리, 및 하드웨어 가속을 위한 동작을 수행하되, 호스트 프로세서와 상기 메모리의 저장 공간을 공유하는 가속기를 포함한다.

명 세 서
청구범위
청구항 1
컴퓨터에 의해 적어도 일시적으로 구현되는:메모리; 및하드웨어 가속을 위한 동작을 수행하되, 호스트 프로세서와 상기 메모리의 저장 공간의 전부를 공유하여, 별도의 전용 메모리 공간으로 작업 집합(working set)을 복제하는 과정을 생략하는 가속기를 포함하고,상기 가속기는,가속기 API(Application Program Interface)를 호출하는 호스트 프로세스의 가상 주소 공간이 정의된 구조체의포인터 주소를 확보하는 연산부; 및상기 확보된 포인터 주소에 기초하여 가상 주소를 물리 주소로 확보하되, 페이지 테이블을 이용해서 페이지 테이블 워크(page table walk)를 수행하는 변환 매니저를 포함하고,상기 변환 매니저는, 변환을 가속하기 위한 페이지 테이블의 적어도 일부분을 저장하고, 상기 저장된 페이지 테이블의 적어도 일부분을 이용해서 페이지 테이블 워크(page table walk)를 수행하는 메인 메모리.
청구항 2
삭제
청구항 3
제1항에 있어서,상기 변환 매니저는,변환 버퍼에 상기 포인터 주소를 이용하여 요청된 가상 주소에 대응하는 상기 물리 주소가 없는 경우 페이지 테이블을 이용해서, 상기 물리 주소를 확보하는 메인 메모리.
청구항 4
제1항에 있어서,상기 연산부는,상기 API(Application Program Interface)가 가상 주소를 전달하는 경우에 가상 메모리 기반으로 연산을 수행하는 메인 메모리.
청구항 5
제1항에 있어서,상기 연산부는 상기 메모리에 접근할 때 마다 상기 변환 매니저를 통해 가상 주소를 물리 주소로 확보하여 상기메모리에 직접 접근하는 메인 메모리.
청구항 6
제1항에 있어서,상기 변환 매니저는 상기 메모리에 접근할 때 마다 가상 주소를 물리 주소로 확보하여 상기 메모리에 직접 접근하는 메인 메모리.
청구항 7
삭제
청구항 8
삭제
청구항 9
제1항에 있어서,상기 메모리는 페이지 테이블 워크를 통해 확보한 물리 주소를 상기 변환 매니저의 변환 버퍼에 저장하고,상기 변환 매니저는 상기 저장된 물리 주소를 이용하여 상기 메모리의 데이터에 접근하는 메인 메모리.

청구항 10
컴퓨터에 의해 적어도 일시적으로 구현되는 메인 메모리의 동작 방법에 있어서,메인 메모리에 내장된 가속기에서 변환 매니저에 가상 주소로 데이터를 요청하는 단계;변환 매니저 내부에 있는 변환 버퍼에서 상기 요청된 가상 주소에 대한 물리 주소가 있는지 여부를 판단하는 단계; 및상기 판단결과, 상기 가상 주소에 대한 물리 주소가 있는 경우, 상기 요청된 가상 주소를 물리 주소로 확보하는단계를 포함하고,상기 가속기는 하드웨어 가속을 위한 동작을 수행하되, 호스트 프로세서와 상기 메인 메모리의 저장 공간의 전부를 공유하여, 별도의 전용 메모리 공간으로 작업 집합(working set)을 복제하는 과정을 생략하고,상기 가속기는,가속기 API(Application Program Interface)를 호출하는 호스트 프로세스의 가상 주소 공간이 정의된 구조체의포인터 주소를 확보하고, 상기 확보된 포인터 주소에 기초하여 가상 주소를 물리 주소로 확보하되, 페이지 테이블을 이용해서 페이지 테이블 워크(page table walk)를 수행하며,상기 변환 매니저는,변환을 가속하기 위한 페이지 테이블의 적어도 일부분을 저장하고, 상기 저장된 페이지 테이블의 적어도 일부분을 이용해서 페이지 테이블 워크(page table walk)를 수행하는 메인 메모리의 동작 방법.
청구항 11
제10항에 있어서,상기 확보한 물리 주소를 통해 데이터에 접근하는 단계를 더 포함하는 메인 메모리의 동작 방법.
청구항 12
제10항에 있어서,상기 판단결과,상기 변환 버퍼에 물리 주소가 없는 경우, 가속기 API(Application Program Interface)로부터 전달된 구조체를이용하여 변환 매니저의 내부에 존재하는 페이지 테이블에 접근하는 단계;상기 페이지 테이블에 기초하여 페이지 테이블 워크를 수행하는 단계; 및상기 수행된 페이지 테이블 워크를 통해 물리 주소로 확보하는 단계
를 더 포함하는 메인 메모리의 동작 방법.
청구항 13
컴퓨터에 의해 적어도 일시적으로 구현되는 메인 메모리의 동작 방법에 있어서,메인 메모리에 내장된 가속기에서 변환 매니저에 가상 주소로 데이터를 요청하는 단계;변환 매니저 내부에 있는 변환 버퍼에서 상기 요청된 가상 주소에 대한 물리 주소가 있는지 여부를 판단하는 단계;상기 판단결과, 상기 가상 주소의 물리 주소가 없는 경우 구조체를 이용하여 메모리의 페이지 테이블에 접근하는 단계; 및상기 접근한 페이지 테이블을 이용하여 페이지 테이블 워크를 수행하는 단계;상기 수행된 페이지 테이블 워크를 통해 물리 주소로 확보하는 단계포함하고,상기 가속기는 하드웨어 가속을 위한 동작을 수행하되, 호스트 프로세서와 상기 메인 메모리의 저장 공간의 전부를 공유하여, 별도의 전용 메모리 공간으로 작업 집합(working set)을 복제하는 과정을 생략하고,상기 가속기는,가속기 API(Application Program Interface)를 호출하는 호스트 프로세스의 가상 주소 공간이 정의된 구조체의포인터 주소를 확보하고, 상기 확보된 포인터 주소에 기초하여 가상 주소를 물리 주소로 확보하되, 상기 페이지테이블을 이용해서 페이지 테이블 워크(page table walk)를 수행하며,상기 변환 매니저는,변환을 가속하기 위한 페이지 테이블의 적어도 일부분을 저장하고, 상기 저장된 페이지 테이블의 적어도 일부분을 이용해서 페이지 테이블 워크(page table walk)를 수행하는 메인 메모리의 동작 방법.
청구항 14
제13항에 있어서,메모리 내부의 페이지 테이블을 변환 매니저로 캐싱하는 단계
를 더 포함하고,상기 테이블 워크를 수행하는 단계는,상기 캐싱된 페이지 테이블을 더 이용하여 테이블 워크를 수행하는 단계를 포함하는 메인 메모리의 동작 방법.
청구항 15
제13항에 있어서,상기 확보한 물리주소를 상기 변환 버퍼에 저장하고, 해당 물리 주소를 이용하여 데이터에 접근하는 단계를 더 포함하는 메인 메모리의 동작 방법.
발명의 설명
기 술 분 야
본 발명은 하드웨어 가속기의 속도를 향상시키고, 메모리의 공간을 절약하기 [0001] 위한 기술적 사상에 관한 것이다.
배 경 기 술
[0002] 하드웨어 가속(Hardware acceleration)은 컴퓨팅에서 일부 기능을 중앙처리장치에서 구동하는 소프트웨어 방식보다 더 빠르게 수행할 수 있는 하드웨어의 사용을 말한다. 이를테면, 하드웨어 가속은 그래픽 처리 장치의 블리팅 가속 기능과 중앙처리장치의 복잡한 기능에 대한 함수가 있다. 일반적으로, 프로세서는 연속적이며 함수는 하나씩 실행된다. 다양한 기술들은 성능을 개선하는 데에 사용되고 하드웨어 가속은 그 기능들 가운데 하나이다.
가속기는 하드웨어 가속을 수행하는데, 일반적으로는 분리된 연산 장치와 메모리 [0003] 공간을 가지고 있다. 가속기를 동작시킬 때에는 가속기에서 사용할 데이터를 DMA(Direct memory access)를 통해 주 메모리로부터 가속기 내부 메모리로 전송한다. 또한, 가속기 동작이 끝나면 DMA를 통해 결과 데이터를 가속기 내부 메모리에서 주 메모리로 전송하는데, 만약 전송할 데이터가 많을 때는 전송 오버헤드가 너무 커져 속도 향상이 적을 수 있다.
[0004] 한편, 운영체제는 프로세스마다 독립적인 가상 메모리 공간을 할당한다. 이를 통해 물리 주소가 연속이 아니더라도 연속된 공간인 것처럼 사용할 수 있다. 프로세서가 가상 주소를 요청하면 TLB(Translation Look-aheadBuffer)에서 그 주소를 물리 주소로 확보하여 메모리 액세스가 이루어지는데, 가속기는 TLB에 접근할 수 없기때문에 물리 주소를 이용하여 동작해야만 한다.
선행기술문헌
특허문헌
[0005] (특허문헌 0001) 대한민국 공개특허 제10-2001-0006855호
(특허문헌 0002) 대한민국 공개특허 제10-2009-0039761호
발명의 내용
해결하려는 과제
과제의 해결 수단
[0006] 일측에 따른 컴퓨터에 의해 적어도 일시적으로 구현되는 메인 메모리는 메모리, 및 하드웨어 가속을 위한 동작을 수행하되, 호스트 프로세서와 상기 메모리의 저장 공간을 공유하는 가속기를 포함한다.
[0007] 일실시예에 따른 상기 가속기는, 가속기 API(Application Program Interface)를 호출하는 호스트 프로세스의 가상 주소 공간이 정의된 구조체의 포인터 주소를 확보하는 연산부, 및 상기 확보된 포인터 주소에 기초하여 가상주소를 물리 주소로 확보하는 변환 매니저를 포함한다.
[0008] 일실시예에 따른 상기 변환 매니저는, 변환 버퍼에 상기 상기 포인터 주소를 이용하여 요청된 가상 주소에 대응하는 상기 물리 주소가 없는 경우 페이지 테이블을 이용해서, 상기 물리 주소를 확보한다.
[0009] 일실시예에 따른 상기 연산부는, 상기 API(Application Program Interface)가 가상 주소를 전달하는 경우에 가상 메모리 기반으로 연산을 수행한다.
[0010] 일실시예에 따른 상기 연산부는 상기 메모리에 접근할 때 마다 상기 변환 매니저를 통해 가상 주소를 물리 주소로 확보하여 상기 물리 메모리에 직접 접근한다.
[0011] 일실시예에 따른 상기 변환 매니저는 변환을 가속하기 위한 페이지 테이블을 저장하고, 상기 페이지 테이블을이용해서 페이지 테이블 워크(page table walk)를 수행한다.
[0012] 일실시예에 따른 상기 메모리는 변환을 가속하기 위한 페이지 테이블을 저장하고, 페이지 테이블 워크를 통해확보한 물리 주소를 상기 변환 매니저의 변환 버퍼에 저장하고, 상기 변환 매니저는 상기 저장된 물리 주소를이용하여 상기 메모리의 데이터에 접근한다.
[0013] 일측에 따른, 컴퓨터에 의해 적어도 일시적으로 구현되는 메인 메모리의 동작 방법은 메인 메모리에 내장된 가속기에서 변환 매니저에 가상 주소로 데이터를 요청하는 단계, 변환 매니저 내부에 있는 변환 버퍼에서 상기 요청된 가상 주소에 대한 물리 주소가 있는지 여부를 판단하는 단계, 상기 판단결과, 상기 가상 주소가 있는 경우상기 요청된 가상 주소를 물리 주소로 확보하는 단계, 상기 확보한 물리 주소를 통해 데이터에 접근하는 단계,및 상기 확보한 물리주소를 상기 변환 버퍼에 저장하는 단계를 포함한다.
[0014] 일실시예에 따른 메인 메모리의 동작 방법은 상기 판단결과, 상기 변환 버퍼에 물리 주소가 없는 경우, 가속기API(Application Program Interface)로부터 전달된 구조체를 이용하여 변환 매니저의 내부에 존재하는 페이지테이블에 접근하는 단계, 상기 페이지 테이블에 기초하여 페이지 테이블 워크를 수행하는 단계, 및 상기 수행된페이지 테이블 워크를 통해 물리 주소로 확보하는 단계를 더 포함한다.
일측에 따른, 컴퓨터에 의해 적어도 일시적으로 구현되는 메인 메모리의 동작 [0015] 방법은 메인 메모리에 내장된 가속기에서 변환 매니저에 가상 주소로 데이터를 요청하는 단계, 변환 매니저 내부에 있는 변환 버퍼에서 상기 요청된 가상 주소에 대한 물리 주소가 있는지 여부를 판단하는 단계, 상기 판단결과, 상기 가상 주소가 없는 경우구조체를 이용하여 메모리의 페이지 테이블에 접근하는 단계, 메모리 내부의 페이지 테이블을 변환 매니저로 캐싱하는 단계, 상기 캐싱된 페이지 테이블을 이용하여 페이지 테이블 워크를 수행하는 단계, 상기 수행된 페이지테이블 워크를 통해 물리 주소로 확보하는 단계, 및 상기 획득한 물리주소를 상기 변환 버퍼에 저장하고, 해당물리 주소를 이용하여 데이터에 접근하는 단계를 포함한다.
도면의 간단한 설명
[0016] 도 1은 일실시예에 따른 메인 메모리를 사용하는 전체 시스템을 설명하는 도면이다.
도 2는 호스트 시스템과 하드웨어 가속기 간 동작에 따른 특징을 설명하는 도면이다.
도 3은 일실시예에 따른 메인 메모리를 보다 구체적으로 설명하는 도면이다.
도 4는 변환 매니저가 페이지 테이블을 저장하는 경우의 실시예를 설명하는 도면이다.
도 5는 메모리가 페이지 테이블을 저장하는 경우의 실시예를 설명하는 도면이다.
도 6은 변환 매니저가 페이지 테이블을 저장하는 경우의 메인 메모리의 동작 방법을 설명하는 도면이다.
도 7은 메모리가 페이지 테이블을 저장하는 경우의 메인 메모리의 동작 방법을 설명하는 도면이다.
발명을 실시하기 위한 구체적인 내용
[0017] 이하에서, 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 권리범위는 이러한 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
[0018] 아래 설명에서 사용되는 용어는, 연관되는 기술 분야에서 일반적이고 보편적인 것으로 선택되었으나, 기술의 발달 및/또는 변화, 관례, 기술자의 선호 등에 따라 다른 용어가 있을 수 있다. 따라서, 아래 설명에서 사용되는용어는 기술적 사상을 한정하는 것으로 이해되어서는 안 되며, 실시예들을 설명하기 위한 예시적 용어로 이해되어야 한다.
[0019] 또한 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세한 그 의미를기재할 것이다. 따라서 아래 설명에서 사용되는 용어는 단순한 용어의 명칭이 아닌 그 용어가 가지는 의미와명세서 전반에 걸친 내용을 토대로 이해되어야 한다.
[0021] 도 1은 일실시예에 따른 메인 메모리를 사용하는 전체 시스템(100)을 설명하는 도면이다.
[0022] 일반적으로, 호스트 프로세서가 연산을 수행하다가 가속기를 호출할 때에는, 가속기가 접근할 수 있는 전용 메모리 공간으로 작업 집합(working set)을 복제해야 한다. 이 과정은 가속기를 처음 호출하기까지의 지연 시간이 길어질 뿐만 아니라, 또한 동일한 데이터가 주 메모리와 가속기 전용 메모리에 중복하여 존재하게 되므로,메모리 자원이 낭비된다.
[0023] 그러나, 전체 시스템(100)은 메인 메모리(120)를 이용하여 메모리 자원의 낭비를 줄일 수 있다.
[0024] 도 1에서 보는 바와 같이, 메인 메모리(120)는 연산 장치, 즉 가속기를 내장 시킬 수 있다.
[0025] 가속기가 메인 메모리(120)에 위치함으로써, 하드웨어 가속을 위한 동작을 수행하는데 있어 호스트 프로세서(110)와 메모리의 저장 공간을 공유할 수 있다. 다시 말해, 호스트 프로세서(110)와 가속기가 주 메모리를 완전히 공유하기 때문에 가속기의 전용 메모리 공간으로 작업 집합(working set)을 복제할 필요가 없다. 따라서,가속기 호출 지연 시간이 짧아지고, 메모리 자원 낭비를 없앨 수 있다.
[0026] 도 2는 호스트 시스템과 하드웨어 가속기 간 동작에 따른 특징을 설명하는 도면이다.
[0027] 일반적인 가속기를 사용하는 시스템에서는 호스트 시스템이 연산을 수행하는 도중에 가속기 호출 API를 구동할수 있다. 이 경우에 DMA가 주 메모리에서 가속기 메모리로 데이터를 전송해야만 하드웨어 가속기가 관련 연산을 수행한다. 또한, DMA는 가속기 메모리에서 주 메모리로 데이터를 전송하여 가속기의 동작을 완료할 수 있도록 한다.
이러한 과정들은 호스트 프로세서가 연산을 수행하다가 가속기를 호출할 때에 [0028] 가속기가 접근할 수 있는 전용 메모리 공간으로 작업 집합(working set)을 복제해야 하며, 이 과정은 가속기를 처음 호출하기까지의 지연 시간이길어지게 만든다. 또한 동일한 데이터가 주 메모리와 가속기 전용 메모리에 중복하여 존재하게 되므로, 메모리자원이 낭비된다
[0029] 그러나, 본 발명에 따른 메인 메모리를 활용하는 경우, 호스트 시스템(210)에서 호출 API가 구동되는 경우 메인메모리 내에 위치하는 하드웨어 가속기(220)는 PIM(processing in memory) 연산을 수행하고 동작을 완료하는 동작 만으로 기존 가속기의 동작을 구현할 수 있다. 참고로, 본 명세서에서 사용되는 PIM은 해당 용어로 권리범위가 한정되는 것이 아니고, 가속기 등의 다양한 의미로 확대 해석될 수 있다. 결국, 가속기가 접근할 수 있는전용 메모리 공간으로 작업 집합(working set)을 복제할 필요가 없어 가속기를 처음 호출하기까지의 지연 시간을 줄일 수 있다. 또한 동일한 데이터가 주 메모리와 가속기 전용 메모리에 중복하여 존재하지 않기 때문에 메모리 자원을 낭비도 예방할 수 있다
[0030] 도 3은 일실시예에 따른 메인 메모리(300)를 보다 구체적으로 설명하는 도면이다.
[0031] 유저 어플리케이션으로부터 가상 주소를 획득한 가속기 API는 구조체와 가상 주소를 메인 메모리(300)에 전달할수 있다.
[0032] 메인 메모리(300)는 연산부(310), 변환 매니저(320), 메모리(330)를 포함할 수 있다. 메인 메모리(300)는 컴퓨팅 단말에 의해 적어도 일시적으로 구현될 수 있다. 컴퓨팅 단말은 퍼스널 컴퓨터, 의료용 기기, 스마트폰, 태블릿 컴퓨터, 웨어러블 디바이스 등 임의의 형태의 전자 기기를 포함한다. 연산부(310), 변환 매니저(320), 메모리(330)는 각각 이러한 전자 기기에 포함되는 물리적 및/또는 논리적 엘리먼트일 수 있다. 이를테면 전용 하드웨어(dedicated hardware) 또는 소프트웨어나 오퍼레이팅 시스템에 의해 제어되는 범용 연산 자원에 의해 연산부(310), 변환 매니저(320), 메모리(330)가 구현될 수 있다. 또한 연산부(310), 변환 매니저(320), 메모리(330)가 하나의 칩에서 함께 구현되는, 따라서 물리적으로 구분되지 않는 것일 수도 있으며, 이러한 하드웨어자원의 구현은 기술의 발달이나 설계 변경에 의해 얼마든지 변경될 수 있다. 따라서 연산부(310), 변환 매니저(320), 메모리(330)의 기능과 동작 및 구조가 서로 구분되는 것으로 이해되지만 실시예에 따라 이러한 구분이다르게 해석되는 경우도 있을 수 있다.
[0033] 먼저, 연산부(310)는 가속기 API(Application Program Interface)를 호출하는 호스트 프로세스의 가상 주소 공간이 정의된 구조체의 포인터 주소를 확보할 수 있다.
[0034] 참고로, 가상 메모리 체계를 사용하는 운영체제는 프로세스마다 고유의 가상 주소 공간을 가진다. 예를 들면리눅스에는 가상 주소 공간을 mm_struct라는 구조체에 정의한다(struct mm_struct* mm). mm_struct는 해당 프로세스의 가상 메모리 페이지 공간을 정의하는데, PGD(Page Global Directory) 정보를 갖고 있다. PGD는 가상주소를 물리주소로 확보하는데 필요한 최상위 테이블로서, PGD를 이용하면 페이지 테이블 워크를 통해 가상 주소와 물리 주소 사이의 변환을 수행할 수 있다.
[0035] 메모리에 대한 가상 주소는 물리 주소를 가리키는 포인터로 이루어져 있다. 즉, 참고가 되는 주소들을 순서대로 찾아가는 과정을 페이지 테이블 워크(page table walk)라 하는데, 최종의 오프셋이 가리키는 주소가 페이지의 물리 주소가 된다.
[0036] 또한, 이 주소에 페이지 오프셋을 더하면 구하고자 하는 물리 주소를 확보할 수 있다
[0037] 연산부(310)는 API(Application Program Interface)가 가상 주소를 전달하는 경우에 가상 메모리 기반으로 연산을 수행할 수 있다.
[0038] 또한, 연산부(310)는 메모리에 접근할 때 마다 변환 매니저(320)를 통해 가상 주소를 물리 주소로 확보하여 물리 메모리에 직접 접근할 수 있다.
[0039] 변환 매니저(320)는 확보된 포인터 주소에 기초하여 가상 주소를 물리 주소로 확보할 수 있다.
[0040] 즉, 변환 매니저(320)는 데이터의 물리 주소를 이용해 해당 데이터에 직접 접근 가능하도록 한다. 특히, 변환매니저(320)는 호스트 프로세서가 가상 주소로 접근하던 데이터를 가속기를 통해 접근하도록 하기 위해서 데이터의 물리 주소를 확보할 수 있다. 즉, 구조체를 통해 전달되는 가상 주소를 물리 주소로 확보할 수 있다. 이를 통해 연산부(310)가 메모리(330)의 물리 주소에 직접 접근이 가능하게 한다.
일실시예에 따른 변환 매니저(320)는 변환 버퍼에 포인터 주소를 이용하여 [0041] 요청된 가상 주소에 대응하는 포인터주소에 상응하는 물리 주소가 있는 경우와 없는 경우를 구분하여 처리할 수 있다. 예를 들어, 변환 버퍼에 가상 주소에 대응하는 물리 주소가 있는 경우를 '히트(Hit)'로, 없는 경우를 '미스(Miss)'로 구분할 수 있다.
[0042] 일실시예에 따른 변환 매니저(320)는 변환 버퍼에 가상 주소에 대응하는 물리 주소가 있는 경우 가상 주소로부터 물리 주소를 직접 확보한다. 한편, 일실시예에 따른 변환 매니저(320)는 변환 버퍼에 가상 주소에 대응하는물리 주소가 없는 경우 페이지 테이블을 이용해서, 물리 주소를 확보할 수 있다.
[0043] 페이지 테이블은 변환 매니저(320)의 내부에 존재할 수도 있고, 메모리(330)에 존재할 수도 있다. 페이지 테이블이 변환 매니저(320)의 내부에 존재하는 경우에 대한 실시예는 이하 도 4 및 도 6에서 설명하고, 페이지 테이이 메모리(330)의 내부에 존재하는 경우에 대한 실시예는 이하 도 5 및 도 7을 통해 상세히 설명한다.
[0044] 메모리(330)는 물리 주소로 식별되는 저장 공간에 데이터를 저장하고 이를 유지한다.
[0045] 도 4는 변환 매니저가 페이지 테이블을 저장하는 경우의 실시예를 설명하는 도면이다.
[0046] 구체적으로, 변환 매니저는 변환을 가속하기 위한 페이지 테이블을 저장하고, 페이지 테이블을 이용해서 페이지테이블 워크(page table walk)를 수행할 수 있다.
[0047] 보다 구체적으로 설명하면, 메인 메모리에 내장된 가속기의 연산부(410)에서 변환 매니저(420)에 가상 주소를전송하여 데이터를 요청하면, 변환 매니저(420) 내부에 있는 변환 버퍼(421)에서 상기 요청된 가상 주소에 대한물리 주소가 있는지 여부를 판단할 수 있다. 판단결과, 변환 버퍼(421)에 물리 주소가 없는 경우, 변환 매니저(420)는 가속기 API(Application Program Interface)로부터 전달된 구조체를 이용하여 내부에 존재하는 페이지테이블(422)에 접근할 수 있다. 예를 들어, 페이지 테이블(422)은 내부로 캐싱이 된 페이지 테이블로 해석될 수있고, 뿐만 아니라 변환 매니저 내부로 완전히 가지고 오는 구조로 해석될 수도 있다. 또한, 변환 매니저(420)는 페이지 테이블(422)에 기초하여 페이지 테이블 워크를 수행하고, 수행된 페이지 테이블 워크를 통해 가상주소를 물리 주소로 확보한다.
[0048] 이후, 변환 매니저(420)는 확보한 물리 주소를 통해 메모리(430)로부터 저장되어 있는 데이터를 획득하여 연산부(410)로 제공할 수 있다.
[0049] 도 5는 메모리가 페이지 테이블을 저장하는 경우의 실시예를 설명하는 도면이다.
[0050] 메모리(530)는 변환을 가속하기 위한 페이지 테이블(531)을 저장하고, 페이지 테이블 워크를 통해 확보한 물리주소를 변환 매니저(520)의 변환 버퍼(521)에 저장하고, 변환 매니저(520)는 저장된 물리 주소를 이용하여 메모리(530)의 데이터에 접근할 수 있다.
[0051] 구체적으로, 메인 메모리에 내장된 가속기의 연산부(510)에서 변환 매니저(520)에 가상 주소로 데이터를 요청하는 경우, 변환 매니저(520)의 내부에 있는 변환 버퍼(521)에서 요청된 가상 주소에 대한 물리 주소가 있는지 여부를 판단할 수 있다.
[0052] 판단결과, 가상 주소가 없는 경우 구조체를 이용하여 메모리의 페이지 테이블에 접근하고, 메모리 내부의 페이지 테이블을 변환 매니저(520)로 캐싱한다. 캐싱된 페이지 테이블을 이용하여 페이지 테이블 워크를 수행하고,수행된 페이지 테이블 워크를 통해 물리 주소로 확보한다.
[0053] 한편, 변환 매니저(520)는 획득한 물리주소를 변환 버퍼 변환 매니저(521)에 저장하고, 해당 물리 주소를 이용하여 데이터에 접근할 수 있다.
[0054] 도 6은 변환 매니저가 페이지 테이블을 저장하는 경우의 메인 메모리의 동작 방법을 설명하는 도면이다.
[0055] 일실시예에 따른 메인 메모리의 동작 방법은 주 메모리에 내장된 가속기가 연산하기 위해 변환 매니저에 가상주소로 데이터를 요청할 수 있다. 변환 매니저 내부에 있는 변환 버퍼에 해당 가상 주소에 대한 물리 주소가있을 경우(hit), 바로 물리 주소로 확보하여 데이터에 접근할 수 있게 한다.
[0056] 반면, 변환 버퍼에 물리 주소가 없는 경우(miss), 가속기 API로부터 받은 mm_struct의 정보를 이용하여 변환 매니저의 내부에 존재하는 페이지 테이블에 접근한다. 이때, 페이지 테이블에 접근한 후 페이지 테이블 워크를통해 물리 주소를 획득할 수 있다. 결국, 획득한 물리 주소를 통해 데이터에 접근함과 동시에 변환 버퍼에 저장할 수 있다.
구체적으로, 일실시예에 따른 메인 메모리의 동작 방법은 메인 메모리에 내장된 [0057] 가속기에서 변환 매니저에 가상주소로 데이터를 요청한다(단계 601). 이에, 변환 매니저를 통해 가상 주소에 상응하는 물리 주소가 저장되어있는지 여부, 즉 히트 여부를 판단할 수 있다(단계 602).
[0058] 단계 602의 판단 결과, 물리 주소가 이미 저장되어 있는 경우라면 일실시예에 따른 메인 메모리의 동작 방법은요청된 가상 주소를 물리 주소로 확보하고(단계 603), 확보한 물리 주소를 통해 데이터에 접근하여 획득한 후메모리에 저장할 수 있다(단계 604).
[0059] 그러나, 단계 602의 판단 결과, 물리 주소가 이미 저장되어 있지 않는 경우라면 일실시예에 따른 메인 메모리의동작 방법은 변환 매니저의 내부에 존재하는 페이지 테이블에 접근한다(단계 605). 일실시예에 따른 메인 메모리의 동작 방법은 페이지 테이블에 기초하여 페이지 테이블 워크를 수행하고(단계 606), 수행된 페이지 테이블워크를 통해 물리 주소로 확보한다(단계 607). 이후, 일실시예에 따른 메인 메모리의 동작 방법은 확보된 물리주소를 통해 데이터에 접근하여 획득한 후 메모리에 저장할 수 있다(단계 604).
[0060] 도 7은 메모리가 페이지 테이블을 저장하는 경우의 메인 메모리의 동작 방법을 설명하는 도면이다.
[0061] 변환 매니저에서 해당 가상 주소의 물리 주소를 획득하지 못한 경우에는 구조체(예, mm_struct)를 이용하여 메인 메모리의 페이지 테이블에 접근할 수 있다. 메인 메모리 내부의 페이지 테이블은 변환 매니저로 캐싱될 수있는데, 페이지 테이블 워크를 통해 확보한 물리 주소를 변환 버퍼에 저장하고, 해당 물리 주소를 이용하여 데이터에 접근할 수 있다. 구체적으로, 일실시예에 따른 메인 메모리의 동작 방법은 메인 메모리에 내장된 가속기에서 변환 매니저에 가상 주소로 데이터를 요청한다(단계 701). 이에, 변환 매니저를 통해 가상 주소에 상응하는 물리 주소가 저장되어 있는지 여부, 즉 히트 여부를 판단할 수 있다(단계 702).
[0062] 판단 결과, 물리 주소가 이미 저장되어 있는 경우라면 일실시예에 따른 메인 메모리의 동작 방법은 요청된 가상주소를 물리 주소로 확보하고(단계 703), 확보한 물리 주소를 통해 데이터에 접근하여 획득한 후 메모리에 저장할 수 있다(단계 704).
[0063] 그러나, 단계 702의 판단 결과, 물리 주소가 이미 저장되어 있지 않는 경우라면 일실시예에 따른 메인 메모리의동작 방법은 구조체를 이용하여 메모리의 내부에 존재하는 페이지 테이블에 접근한다(단계 705).
[0064] 일실시예에 따른 메인 메모리의 동작 방법은 메모리 내부의 페이지 테이블을 변환 매니저로 캐싱하고(단계706), 캐싱된 페이지 테이블을 이용하여 페이지 테이블 워크를 수행한다(단계 707). 한편, 일실시예에 따른 메인 메모리의 동작 방법은 수행된 페이지 테이블 워크를 통해 물리 주소로 확보할 수 있다(단계 708).
[0065] 이후, 일실시예에 따른 메인 메모리의 동작 방법은 확보된 물리 주소를 통해 데이터에 접근하여 획득한 후 메모리에 저장할 수 있다(단계 704).
[0066] 본 발명을 이용하면 메인 메모리에 가속기와 관련된 연산 장치를 내장 시킬 수 있다. 이로써, 호스트 프로세서와 연산 장치가 주 메모리를 완전히 공유하기 때문에 가속기의 전용 메모리 공간으로 작업 집합(working set)을복제할 필요가 없다. 뿐만 아니라, 가속기 호출 지연 시간이 짧아지고, 메모리 자원 낭비를 없앨 수 있다. 이러한 구조는 연산 장치가 주 메모리 내부에 존재하기 때문에 데이터의 물리 주소를 이용해 해당 데이터에 직접접근 가능하다. 이때 호스트 프로세서가 가상 주소로 접근하던 데이터를 가속기가 접근하기 위해서는 그 데이터의 물리 주소를 확보할 수 있다.
[0067] 이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 애플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), [0068] 또는 이들 중 하나 이상의조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 가상장치(virtual equipment), 컴퓨터 저장 매체 또는 장치, 또는 전송되는 신호 파(signal wave)에 영구적으로,또는 일시적으로 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서,분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
[0069] 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media),CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를포함한다. 상기된 하드웨어 장치는 실시예의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
[0070] 이상과 같이 실시예들이 비록 한정된 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
[0071] 그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.
【심사관 직권보정사항】
【직권보정 1】
【보정항목】청구범위
【보정세부항목】제1, 10항
【변경전】
상기 페이지 테이블
【변경후】
페이지 테이블 

등록된 상품문의

  • 상품문의가 없습니다.

등록된 사용후기

  • 사용후기가 없습니다.