KR100591755B1 - 복수의 스레드를 동시에 처리하는 장치 및 방법 - Google Patents

복수의 스레드를 동시에 처리하는 장치 및 방법 Download PDF

Info

Publication number
KR100591755B1
KR100591755B1 KR1020030050123A KR20030050123A KR100591755B1 KR 100591755 B1 KR100591755 B1 KR 100591755B1 KR 1020030050123 A KR1020030050123 A KR 1020030050123A KR 20030050123 A KR20030050123 A KR 20030050123A KR 100591755 B1 KR100591755 B1 KR 100591755B1
Authority
KR
South Korea
Prior art keywords
thread
memory
threads
memories
address
Prior art date
Application number
KR1020030050123A
Other languages
English (en)
Other versions
KR20050011149A (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 삼성전자주식회사
Priority to KR1020030050123A priority Critical patent/KR100591755B1/ko
Priority to US10/840,374 priority patent/US20050022192A1/en
Priority to TW093120300A priority patent/TW200516404A/zh
Priority to GB0711657A priority patent/GB2436249A/en
Priority to GB0711658A priority patent/GB2436250A/en
Priority to GB0415567A priority patent/GB2404266B/en
Priority to JP2004214506A priority patent/JP2005044363A/ja
Publication of KR20050011149A publication Critical patent/KR20050011149A/ko
Application granted granted Critical
Publication of KR100591755B1 publication Critical patent/KR100591755B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • G06F12/1036Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]

Abstract

본 발명은 마이크로프로세서에 관한 것이다.
본 발명의 특징은 마이크로프로세서에서 프로세스에 가상메모리를 할당하는데 있어서 프로세스 내에 있는 각각의 스레드들에도 독립적인 메모리공간을 할당하는데 있다.
프로세스에 프로세스메모리공간과 스레드메모리공간을 독립적으로 할당함으로써 스레드간의 메모리 충돌이나 프로그램의 보안문제를 방지할 수 있으며, 특히 프로그래머가 프로그래밍시 메모리를 관리하는데 드는 노력을 절감할 수 있도록 해주는 효과가 있다.
마이크로프로세서, 프로세스, 스레드, 가상메모리, 어드레스변환참조버퍼

Description

복수의 스레드를 동시에 처리하는 장치 및 방법{APPARATUS AND METHOD FOR SIMULTANEOUS MULTI-THREAD PROCESSING}
도 1a 및 1b는 종래의 어드레스변환참조버퍼를 이용하여 가상메모리어드레스를 물리적메모리어드레스로 변환하는 것을 보여주는 도면,
도 2a 및 2b는 종래 기술의 어드레스변환참조버퍼의 구조를 보여주는 도면,
도 3 및 도 4는 본 발명의 실시예에 따라 하나의 프로세스에 메모리공간을 할당하는 방법을 설명하기 위한 도면,
도 5a 및 도 5b는 본 발명의 실시예에 따른 가상메모리어드레스를 물리적메모리어드레스로 변환하는 방법을 설명하기 위한 도면,
도 6a 및 도 6b는 본 발명의 실시예에 따른 어드레스변환참조버퍼의 구성을 보여주는 도면이다.
본 발명에 따른 도면들에서 실질적으로 동일한 구성과 기능을 가진 구성요소들에 대하여는 동일한 참조부호를 사용한다.
*도면의 주요부분에 대한 부호의 설명*
VP10 : 프로세스메모리공간
VP10 ~ VPn0 : 스레드메모리공간
PA : 물리적메모리공간
본 발명은 전자회로장치에 관한 것으로, 더욱 상세하게는 마이크로프로세서에 관한 것이다.
마이크로프로세서는 마이크로칩으로 된 컴퓨터 프로세서이며, 로직 칩이라고 불리기도 한다. 그것은 컴퓨터가 켜지면 즉시 동작에 들어가는 일종의 "엔진"이다. 마이크로프로세서는 레지스터라고 불리는 아주 작은 기억소자를 이용하여 산술 및 논리연산을 수행하도록 설계되었다. 마이크로프로세서의 대표적인 연산에는 덧셈, 뺄셈, 두 수의 비교 그리고 한 장소에서 다른 장소로 숫자를 옮기는 것 등이 포함된다. 이러한 연산들은 마이크로프로세서 설계의 한 부분인 명령어 셋의 수행 결과이다. 컴퓨터가 기동되면, 마이크로프로세서는 기본 입출력시스템 즉, 바이오스의 제일 첫번째 명령어를 자동으로 수행하도록 설계되어 있으며, 그후, 바이오스나 운영체계 또는 응용프로그램이 수행할 명령어들을 제공함으로써 마이크로프로세서를 움직여나간다.
반도체공정 기술의 발달에 따라 단위 면적당 구현할 수 있는 트랜지스터의 개수가 기하급수적으로 늘었다. 그리고 이에 따라 칩상에 구현된 회로는 점점 더 복잡해지고 있다. 마이크로프로세서분야에서도 이러한 현상이 나타나며, 마이크로 프로세서 역시 점점 더 복잡한 구조를 가져가고 있다.
마이크로프로세서에서 처리하는 데이터의 양이 증가함에 따라 그 처리속도 역시 마이크로프로세서의 중요한 성능요인으로 되고 있다. 마이크로프로세서의 처리속도를 향상시키기 위하여 다양한 방법이 연구되고 있다. 5스테이지 파이프라인(5 stage pipeline),슈퍼스칼라(super scaler) ,가상메모리어드레스(virtual address), 내부캐쉬(internal-cache) 등이 마이크로프로세서의 처리속도를 향상시키기 위한 기법들이다. 특히, 최근에는 하나의 CPU에 2개이상의 프로그램, 즉 2개이상의 프로세스를 성능 저하 없이 수행하려는 SMT(simultaneous-multi-thread)기술이 마이크로프로세서의 처리속도를 향상시키기 위한 기법으로 이용된다.
많은 마이크로프로세서는 메모리를 효율적으로 사용하기 위하여 가상의 메모리공간 및 가상의 메모리어드레스를 갖는다. 가상메모리를 지원하는 마이크로프로세서에서 가상메모리어드레스와 물리적메모리어드레스는 다른 의미를 갖는다. 가상메모리어드레스는 프로그램 또는 프로그래머가 보는 어드레스영역이며 물리적메모리어드레스는 실제 메인메모리를 억세스하기 위한 메모리어드레스공간이다.
종래의 마이크로프로세서에서는 하나의 프로세스가 하나의 가상메모리공간을 가진다. 예를 들면, 32비트 마이크로프로세서의 경우 하나의 프로세스는 최고 4GB(Giga Byte)의 하나의 가상메모리공간을 가진다. 그리고 이 가상메모리공간은 가상메모리어드레스를 물리적메모리어드레스로 변환하는 어드레스변환테이블을 이용하여 물리적메모리공간에 매핑된다. 즉, 어드레스변환테이블을 통해 가상페이지 번호를 물리적페이지번호로 전환하여 실제 메모리에 접근한다. SMT를 지원하지 않는 마이크로프로세서뿐만 아니라 SMT를 구현한 마이크로프로세서에서도 이러한 변환기법을 사용한다.
대표적인 어드레스변환테이블로 어드레스변환참조버퍼(translation lookaside buffer; TLB)를 들 수 있다.
도 1a 및 1b는 종래의 어드레스변환참조버퍼를 이용하여 가상메모리어드레스를 물리적메모리어드레스로 변환하는 것을 보여주는 도면이다. 도 1a는 프로세스 식별번호(Process ID)를 포함하는 경우의 어드레스변환을 보여주는 도면이고, 도 1b는 프로세스 식별번호(Process ID)를 포함하지 않는 경우의 어드레스변환을 보여주는 도면이다. 프로세스 식별번호는 어드레스공간번호(address space number: ASN)로 표현되기도 한다.
도 1a에서 가상메모리어드레스는 프로세스 식별번호(process ID), 가상페이지번호(virtual page number), 페이지오프셋(page offset)으로 구성된다. 다만, 도 1b에서는 프로세스식별번호 없이 가상페이지어드레스와 페이지오프셋만으로 가상메모리어드레스가 구성된다.
가상메모리어드레스에서 물리적메모리어드레스로 변환하는데 있어 변환효율을 위해 통상 4K바이트(byte)의 페이지단위로 변환을 한다. 이 경우 가상메모리어드레스 전체를 물리적메모리어드레스 전체로 전환하는 것이 아니라 상위 가상페이지번호(또는 프로세스 식별번호 포함)만 물리적페이지번호로 전환한다. 그리고 가상페이지와 물리적페이지의 변환은 수행하지 않고 그대로 동일하게 통과시킨다.
도 2a 및 2b는 종래 기술의 어드레스변환참조버퍼의 구조를 보인것으로, 도 2a는 프로세스 식별번호를 포함한 경우를 보여주고, 도 2b는 프로세스 식별번호를 포함하지 않는 경우를 보여준다. 종래의 어드레스변환참조버퍼는 크게 태그(tag)와 데이터(data)로 나누어진다.
도 2a 및 2b에서 어드레스변환참조버퍼의 태그는 프로세스 식별번호(process ID), 가상메모리페이지번호(virtual page number), 페이지오프셋(page offset), V(valid), L(lock)으로 구성되어 있고, 데이터(data)는 물리적페이지번호(physical page number)와 엑세스허용(access permission)과 같은 보안정보(protection)로 구성된다.
상기와 같이 구성된 어드레스변환참조버퍼의 동작은 다음과 같다. 입력된 프로세스 식별번호(process ID)와 가상메모리페이지번호(virtual page number)를 어드레스변환참조버퍼에 저장된 태그내용과 비교해서 일치하고 V가 유효한 값을 가지면 즉, 밸리드(valid)하면 해당 엔트리(entry)의 물리적메모리페이지번호(physical page number)와 보안정보(protection information)가 출력된다.
SMT는 하나의 CPU에 여러개의 프로세스 또는 여러 개의 스레드가 동시에 수행되는 것으로, 이 프로세스는 여러개의 스레드들로 구성될 수 있다. 현재까지 SMT를 구현한 마이크로프로세서의 경우, 메모리관리유닛(memory management unit: MMU) 또는 어드레스변환참조버퍼를 이용하여 여러 개의 프로세스를 하나의 CPU에 동시에 수행시키는 것은 가능하다. 그러나, 여러 개의 스레드를 가진 하나의 프로세스를 SMT환경에서 수행할 경우 스레드간의 보안문제와 같은 많은 문제점들이 유발된다.
마이크로프로세서에서 하나의 프로그램을 실행하는데 있어서, 하나의 상위프로세스(Parent Process)가 있고 그 안에 여러 개의 하위 프로세스(child process)를 두어 실행할 수가 있다. 이와 같은 경우에는 다음과 같은 문제점이 있다. 먼저, 하위프로세스(child process)는 상위프로세스(parent process)와는 완전히 독립된 프로세스로 독립된 메모리 공간을 가지게 되며 수행 또한 독립적으로 이루어진다. 즉, 완전히 다른 프로그램이 함께 수행되는 것과 같다. 만약 이 둘 사이에 커뮤니케이션(communication)이 필요하다면 단지 하드디스크의 파일(file)이나 운영체제(OS)의 커널(kernel)을 통해서만 서로 커뮤니케이션할 수 있다. 따라서 이들간의 커뮤니케이션은 대단히 느리고 비효율적이다. 이것은 서로의 메모리 영역을 직접 엑세스하는 것은 불가능하기 때문이다.
마이크로프로세서에서 하나의 프로그램을 실행하는데 있어서, 하나의 프로세스가 있고 그 안에 여러개의 스레드가 있는 구조로 프로그램을 실행할 수도 있다. 이 경우 한 프로세스 내의 모든 스레드는 메모리를 함께 사용할 뿐만 아니라 프로세스의 모든 자원(resource)를 같이 사용할 수 있다. 또한 스레드들 끼리 커뮤니케이션이 필요할 경우 상대 메모리를 직접 엑세스하는 것 또한 가능하므로 대단히 빠르고 효율적으로 데이터를 처리할 수 있다. 그러나, 스레드들끼리 메모리를 함께 사용하기 때문에 보안(protection)문제가 발생할 수 있다. 또한 스레드생성에 따른 메모리 관리를 프로그래머가 책임져야하기 때문에 프로그래밍단계에서 효율적메모리관리를 위한 많은 노력을 기울여야 한다는 문제점이 있다.
본 발명은 상기의 문제점을 해결하기 위하여 창안된 것으로, 본 발명의 목적은 프로세스 내부의 스레드들간의 빠른 커뮤니케이션이 가능하고 프로그래머의 메모리 관리 부담을 최소화할 수 있는 마이크로프로세서를 제공하는데 있다.
상기의 목적을 달성하기 위한 본 발명의 구성은 다수 개의 프로세스를 동시에 처리하는 마이크로프로세서에 있어서, 상기 각각의 프로세스에는 각각 하나씩의 프로세스메모리공간이 할당되고 상기 각각의 프로세스 내의 스레드들에는 각각 하나씩의 스레드메모리공간이 할당되며, 상기 스레드메모리공간들은 상기 프로세스메모리공간과 독립적인 메모리공간인 것을 특징으로 한다.
바람직한 실시예에 있어서, 상기 스레드메모리공간들은 서로 독립적인 메모리공간이며, 상기 프로세스메모리공간은 상기 프로세스에 속한 스레드들에 의해 공통으로 사용된다.
상기의 목적은 다수 개의 프로세스를 동시에 처리하는 마이크로프로세서에 가상메모리를 할당하는 방법에 있어서, 상기 각각의 프로세스에는 각각 하나씩의 프로세스메모리공간을 할당하고 상기 각각의 프로세스 내의 스레드들에는 각각 하나씩의 스레드메모리공간을 할당하며, 상기 스레드메모리공간들은 상기 프로세스메모리공간과 독립적인 메모리공간이 되도록 함으로써 달성할 수 있다.
바람직한 실시예에 있어서, 상기 스레드메모리공간들은 서로 독립적인 메모리공간이고 상기 프로세스메모리공간은 상기 프로세스에 속한 스레드들에 의해 공 통으로 사용된다.
상기의 목적은 스레드식별번호와 가상메모리페이지번호를 포함하는 태그부와; 물리적메모리페이지번호를 포함하는 데이터부;를 구비하며, 상기 태그부에 대응하는 상기 데이터부를 결정함으로써 가상메모리어드레스를 물리적메모리어드레스로 매핑하는 것을 특징으로 하는 어드레스변환참조버퍼를 이용함으로써 달성될 수 있다.
바람직한 실시예에 있어서, 상기 태그부는 프로세스 식별번호 및 상기 가상메모리어드레스가 프로세스 메모리공간의 어드레스인지 스레드메모리공간의 어드레스인지를 알수 있게 하는 스레드비트를 포함한다.
이하 첨부한 도면을 참조하여 본 발명의 실시예를 상세히 설명한다.
본 발명은 하나의 프로세스가 여러 개의 스레드들로 구성되고 이 스레드들이 동시에 수행될 때 발생할 수 있는 여러가지 문제점들을 방지할 수 있는 메모리구조를 제공한다.
도 3 및 도 4는 본 발명의 실시예에 따라 하나의 프로세스에 메모리공간을 할당하는 방법을 설명하기 위한 도면으로, 도 3은 하나의 프로세스에 하나의 스레드가 속할 때(single-process single-thread)의 메모리 구조를 보여주는 도면이고, 도 4는 하나의 프로세스에 다수 개의 스레드가 속할 때(single-process multiple-thread)의 메모리 구조를 보여주는 도면이다.
본 발명의 실시예에서는 하나의 프로세스가 프로세스메모리공간 및 이와 독 립적인 스레드메모리공간을 갖는다. 도 3을 참조하면, 하나의 스레드를 갖는 프로세스에는 하나의 프로세스 메모리공간(VP10) 및 이와 독립적인 하나의 스레드메모리공간(VT10)이 할당된다.
도 4를 참조하면, n개의 스레드를 갖는 프로세스에는 하나의 프로세스메모리공간(VP10)과 각각의 스레드에 대한 n개의 스레드메모리공간들(VT10 ~ VTn0)을 가상메모리공간에 할당된다.
상기 프로세스메모리공간(VP10)은 n개의 모든 스레드들이 엑세스할 수 있는 메모리 공간이며 주로 메세지(message)/파라미터(parameter)/범용데이터(global data)등을 주고받는데 사용된다. n개의 스레드메모리공간들(VT10 ~ VTn0)은 각 스레드가 독립적으로 수행될 메모리 공간이다.
상기 n개의 스레드메모리공간들(VT10 ~ VTn0)은 상기 프로세스메모리공간( VP10)과 가상메모리공간에서 독립적인 공간을 갖는다. 또한 상기 n개의 스레드메모리공간들(VT10 ~ VTn0) 역시 가상메모리공간상에서 서로 독립적인 공간을 갖는다. 이들 메모리공간들은 서로 독립되어 있어 서로를 볼 수도 읽을 수도 없다. 스레드들끼리 커뮤니케이션을 해야 할 경우에는 프로세스메모리공간(VP10)을 사용해야 한다. 각각의 스레드는 프로세스의 모든 자원(resource)을 그대로 상속받으며, 이를 자유롭게 이용할 수 있다.
도 5a 및 도 5b는 본 발명의 실시예에 따른 가상메모리어드레스를 물리적메모리어드레스로 변환하는 방법을 설명하기 위한 도면이고, 도 6a 및 도 6b는 본 발명의 실시예에 따른 어드레스변환참조버퍼의 구성을 보여주는 도면이다.
도 5a 및 도 6a는 프로세스식별번호를 이용하는 경우이고, 도 5b 및 도 6b는 프로세스식별번호를 이용하지 않는 경우이다.
도 5a 및 도 6a를 참조하면, 본 발명의 실시예에 따른 어드레스변환참조버퍼에서 태그는 프로세스식별번호(Process ID), 스레드식별번호(Thread ID), 스레드비트(T), 가상메모리페이지번호(virtual page number), 페이지오프셋(page offset), V(valid), L(lock)으로 구성되고, 데이터는 물리적메모리페이지번호(physical page number)와 보안정보(protection)로 구성된다.
상기 스레드식별번호(Thread ID)는 현재 생성된 스레드의 식별번호를 나타낸다. 예들 들어 스레드식별번호가 3비트로 구성되어 있다면 한 프로세스가 생성할 수 있는 최대 스레드는 8개가 된다.
스레드비트(T bit)는 현재 변환하는 메모리어드레스가 프로세스메모리공간의 메모리어드레스인지 스레드메모리공간의 메모리어드레스인지를 식별하기 위한 것이다. 스레드비트(T bit)가 0 인 경우 프로세스메모리공간을 사용하고 스레드비트(T bit)이 1 인 경우 현재 스레드가 일치하는 스레드메모리공간을 사용한다. 즉, 스레드비트(T bit)가 1인 경우 스레드식별번호를 비교하고, 0 인 경우에는 비교하지 않는다. 이를 통해 스레드비트가 1 인경우 스레드는 스레드메모리공간에서 수행되어 다른 스레드와는 개별적이고 독립적인 메모리 공간을 가지게 되고, 스레드비트가 0 인 경우 프로세스메모리공간을 사용하여 스레드간의 데이터/메세지/파라미터 등을 전달한다.
스레드식별번호와 스레드비트는 가상메모리어드레스의 한 부분이 될 수도 있 고 별도의 레지스터로 별도로 구현될 수도 있다. 예컨대, 64비트 장치에서 스레드식별번호(3bit), 스레드비트(1bit), 프로세스식별번호(8bit), 가상메모리페이지번호(40bit), 페이지오프셋(12bit)와 같이 가상메모리어드레스를 구현할 수도 있고, 32비트 장치에서 스레드식별번호(3bit), 스레드비트(1bit), 프로세스식별번호( 8bit)를 별도의 레지스터로 구현하고 가상메모리페이지번호(20bit), 페이지오프셋(12bit)와 같이 가상메모리어드레스를 구현할 수도 있다.
여기서 스레드비트는 별도의 인스트럭션(instruction)을 통해 0 또는 1로 셋팅할 수도 있고, 가상메모리어드레스의 일부분으로 두어 어드레스에 따라 구분할 수도 있다.
이상에서, 본 발명에 따른 회로의 구성 및 동작을 상기한 설명 및 도면에 따라 도시하였지만, 이는 예를 들어 설명한 것에 불과하며 본 발명의 기술적 사상 및 범위를 벗어나지 않는 범위 내에서 다양한 변화 및 변경이 가능함은 물론이다.
상술한 바와 같이 본 발명에 의하면, 하나의 프로세스에 메모리를 할당하는데 있어서, 프로세스 내의 스레드들에 대하여 독립적인 메모리공간을 할당하고 각각의 스레드들이 공통으로 엑세스하고 공유할 수 있는 프로세스메모리공간을 할당함으로써 스레드간의 메모리 충돌이나 프로그램의 보안문제를 방지할 수 있다.
또한 프로그래머가 프로그래밍시 메모리를 관리하는데 드는 노력을 절감할 수 있도록 해주는 효과가 있다.

Claims (19)

  1. 복수의 프로세스들을 동시에 처리하는 마이크로프로세서에 있어서,
    상기 복수의 프로세스들에 할당되는 적어도 하나의 프로세스 메모리와;
    상기 프로세스 메모리와 독립적이고, 상기 복수의 프로세스들 내의 복수의 스레드들 각각에 할당되는 복수의 스레드 메모리들; 그리고
    상기 스레드 메모리들의 가상 메모리 어드레스를 물리적 메모리 어드레스로 변환하기 위한 변환 참조 버퍼를 포함하되,
    상기 변환 참조 버퍼는 스레드 ID, 상기 프로세스 메모리와 상기 스레드메모리를 독립적으로 구성하기 위한 스레드 비트 및 가상 메모리 페이지 번호를 포함하는 태그 유닛과;
    물리적 메모리 페이지 번호, 상기 태그 유닛에 대응하는 데이터 유닛; 그리고
    상기 가상 메모리 어드레스를 상기 물리적 메모리 어드레스로 변환하기 위해 사용되는 데이터 유닛을 포함하는 것을 특징으로 하는 마이크로프로세서.
  2. 제 1 항에 있어서,
    상기 복수의 스레드 메모리들 각각은 대응하는 스레드에 할당되는 것을 특징으로 하는 마이크로프로세서.
  3. 제 1 항에 있어서,
    상기 프로세스 메모리는 복수의 스레드들에 의해서 사용되는 것을 특징으로 하는 마이크로프로세서.
  4. 복수의 프로세스들을 동시에 처리하는 마이크로프로세서에 가상 메모리를 할당하는 방법에 있어서:
    프로세스 메모리를 복수의 대응하는 프로세스들에 할당하는 단계; 그리고
    스레드 메모리들을 복수의 대응하는 프로세스들 내의 스레드들에 할당하는 단계를 포함하되;
    상기 스레드 메모리들은 상기 프로세스 메모리와 독립적인 것을 특징으로 하는 마이크로프로세서에 가상 메모리를 할당하는 방법.
  5. 제 4 항에 있어서,
    상기 스레드 메모리들 각각은 대응하는 스레드에 할당되는 것을 특징으로 하는 마이크로프로세서에 가상 메모리를 할당하는 방법.
  6. 제 4 항에 있어서,
    상기 프로세스 메모리는 상기 스레드들에 의해서 사용되는 것을 특징으로 하는 마이크로프로세서에 가상 메모리를 할당하는 방법.
  7. 삭제
  8. 제 1 항에 있어서,
    상기 태그 유닛은 프로세스 ID를 포함하는 것을 특징으로 하는 마이크로프로세서.
  9. 제 2 항에 있어서,
    상기 스레드 비트는 상기 가상메모리 어드레스가 프로세스메모리 또는 스레드메모리의 어드레스 인지를 판별하기 위한 것임을 특징으로 하는 마이크로프로세서.
  10. 적어도 하나의 스레드를 갖는 프로세스에 대응하는 프로세스 메모리; 그리고
    상기 프로세스 메모리와 독립적이고, 상기 적어도 하나의 스레드에 대응하는 스레드 메모리를 포함하되;
    상기 프로세스 및 상기 적어도 하나의 스레드는 상기 프로세스 메모리에 접근하는 장치.
  11. 적어도 하나의 프로세스 메모리 및 적어도 두 개의 스레드 메모리들을 구비한 가상 메모리를 포함하되;
    상기 적어도 두 개의 스레드 메모리들 각각은 별개의 스레드들에 대응하고, 상기 적어도 하나의 프로세스 메모리로부터 독립적인 장치.
  12. 제 11 항에 있어서,
    상기 스레드 메모리들은 다른 스레드 메모리들에 접근하지 않고, 상기 적어도 하나의 프로세스 메모리에만 접근하며, 상기 스레드 메모리들은 상기 적어도 하나의 프로세스 메모리에 의해서만 접근되는 장치.
  13. 제 11 항에 있어서,
    상기 적어도 하나의 프로세스 메모리에 의해서 접근되는 상기 스레드 메모리들은 독출 동작을 포함하는 장치.
  14. 제 11 항에 있어서,
    상기 적어도 두 개의 스레드들 중 하나에 접근하기 위해 상기 적어도 하나의 프로세스 메모리는 상기 두 개의 스레드들 중 다른 하나에 의해서 사용되는 장치.
  15. 제 13 항에 있어서,
    상기 적어도 하나의 프로세스 메모리는 상기 복수의 스레드들 중 어느 하나를 접근하기 위해 상기 적어도 두 개의 스레드들 중 하나에 의해서 사용되는 메모리인 장치.
  16. 가상 메모리를 할당하기 위한 방법에 있어서:
    적어도 하나의 프로세스를 프로세스 메모리에 할당하는 단계; 그리고
    상기 프로세스 내 적어도 하나의 스레드를 스레드 메모리에 할당하는 단계를 포함하되; 상기 스레드 메모리는 상기 프로세스 메모리와 독립적인 가상 메모리 할당 방법.
  17. 가상 메모리 어드레스를 물리적 메모리 어드레스로 변환하는 방법에 있어서:
    스레드 비트의 값을 판별하는 단계; 그리고
    상기 판별된 스레드 비트 값에 따라서 스레드 메모리 또는 프로세스 메모리 내 동작을 수행하는 단계를 포함하는 어드레스 변환 방법.
  18. 제 17 항에 있어서,
    상기 판별된 스레드 비트 값은 스레드 동작을 수행하는 것에 의해 결정되고, 상기 스레드 동작은 대응하는 스레드 메모리 내에서 수행되는 어드레스 변환 방법.
  19. 제 17 항에 있어서,
    상기 판별된 스레드 비트 값은 데이터, 메시지 또는 파라메터 가운데 적어도 하나를 전송하기 위한 상기 프로세스 메모리를 사용하는 동작을 수행하는 것에 기인하는 어드레스 변환 방법.
KR1020030050123A 2003-07-22 2003-07-22 복수의 스레드를 동시에 처리하는 장치 및 방법 KR100591755B1 (ko)

Priority Applications (7)

Application Number Priority Date Filing Date Title
KR1020030050123A KR100591755B1 (ko) 2003-07-22 2003-07-22 복수의 스레드를 동시에 처리하는 장치 및 방법
US10/840,374 US20050022192A1 (en) 2003-07-22 2004-05-07 Apparatus and method for simultaneous multi-thread processing
TW093120300A TW200516404A (en) 2003-07-22 2004-07-07 Appartus and method for simnltaneous multi-thread processing
GB0711657A GB2436249A (en) 2003-07-22 2004-07-12 Translation lookaside buffer for simultaneous multi-thread processing
GB0711658A GB2436250A (en) 2003-07-22 2004-07-12 Simultaneous multi-thread processing using a thread bit
GB0415567A GB2404266B (en) 2003-07-22 2004-07-12 Apparatus and method for simulating multi-thread processing
JP2004214506A JP2005044363A (ja) 2003-07-22 2004-07-22 複数のスレッドを同時に処理する装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030050123A KR100591755B1 (ko) 2003-07-22 2003-07-22 복수의 스레드를 동시에 처리하는 장치 및 방법

Publications (2)

Publication Number Publication Date
KR20050011149A KR20050011149A (ko) 2005-01-29
KR100591755B1 true KR100591755B1 (ko) 2006-06-22

Family

ID=32866994

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030050123A KR100591755B1 (ko) 2003-07-22 2003-07-22 복수의 스레드를 동시에 처리하는 장치 및 방법

Country Status (4)

Country Link
US (1) US20050022192A1 (ko)
KR (1) KR100591755B1 (ko)
GB (3) GB2436250A (ko)
TW (1) TW200516404A (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100899097B1 (ko) 2007-05-11 2009-05-25 한국과학기술원 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7093100B2 (en) * 2003-11-14 2006-08-15 International Business Machines Corporation Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes
US8024726B2 (en) * 2004-05-28 2011-09-20 International Business Machines Corporation System for correct distribution of hypervisor work
US7551617B2 (en) * 2005-02-08 2009-06-23 Cisco Technology, Inc. Multi-threaded packet processing architecture with global packet memory, packet recirculation, and coprocessor
US7743233B2 (en) * 2005-04-05 2010-06-22 Intel Corporation Sequencer address management
US7685409B2 (en) 2007-02-21 2010-03-23 Qualcomm Incorporated On-demand multi-thread multimedia processor
WO2008155849A1 (ja) * 2007-06-20 2008-12-24 Fujitsu Limited 演算処理装置、tlb制御方法、tlb制御プログラムおよび情報処理装置
US9086913B2 (en) * 2008-12-31 2015-07-21 Intel Corporation Processor extensions for execution of secure embedded containers
US20140149697A1 (en) * 2012-11-28 2014-05-29 Dirk Thomsen Memory Pre-Allocation For Cleanup and Rollback Operations
US9823869B2 (en) * 2014-01-08 2017-11-21 Nvidia Corporation System and method of protecting data in dynamically-allocated regions of memory
CN105993004B (zh) * 2014-07-21 2019-04-02 上海兆芯集成电路有限公司 转译后备缓冲器、操作其的方法以及包含其的处理器
US9886393B2 (en) 2016-04-13 2018-02-06 At&T Mobility Ii Llc Translation lookaside buffer switch bank

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5727178A (en) * 1995-08-23 1998-03-10 Microsoft Corporation System and method for reducing stack physical memory requirements in a multitasking operating system
US6175916B1 (en) * 1997-05-06 2001-01-16 Microsoft Corporation Common-thread inter-process function calls invoked by jumps to invalid addresses
US6442585B1 (en) * 1997-11-26 2002-08-27 Compaq Computer Corporation Method for scheduling contexts based on statistics of memory system interactions in a computer system
US6493740B1 (en) * 1998-06-16 2002-12-10 Oracle Corporation Methods and apparatus for multi-thread processing utilizing a single-context architecture
US6298411B1 (en) * 1999-01-05 2001-10-02 Compaq Computer Corporation Method and apparatus to share instruction images in a virtual cache
US6542991B1 (en) * 1999-05-11 2003-04-01 Sun Microsystems, Inc. Multiple-thread processor with single-thread interface shared among threads
US6507903B1 (en) * 2000-06-20 2003-01-14 International Business Machines Corporation High performance non-blocking parallel storage manager for parallel software executing on coordinates
EP1182570A3 (en) * 2000-08-21 2004-08-04 Texas Instruments Incorporated TLB with resource ID field
EP1182568A3 (en) * 2000-08-21 2004-07-21 Texas Instruments Incorporated TLB operation based on task-id
US6938252B2 (en) * 2000-12-14 2005-08-30 International Business Machines Corporation Hardware-assisted method for scheduling threads using data cache locality
US7111294B2 (en) * 2001-01-16 2006-09-19 Microsoft Corporation Thread-specific heaps
US7152232B2 (en) * 2001-07-16 2006-12-19 Sun Microsystems, Inc. Hardware message buffer for supporting inter-processor communication
US6925643B2 (en) * 2002-10-11 2005-08-02 Sandbridge Technologies, Inc. Method and apparatus for thread-based memory access in a multithreaded processor
WO2005022381A2 (en) * 2003-08-28 2005-03-10 Mips Technologies, Inc. Integrated mechanism for suspension and deallocation of computational threads of execution in a processor
US7093100B2 (en) * 2003-11-14 2006-08-15 International Business Machines Corporation Translation look aside buffer (TLB) with increased translational capacity for multi-threaded computer processes

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100899097B1 (ko) 2007-05-11 2009-05-25 한국과학기술원 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치

Also Published As

Publication number Publication date
GB0711658D0 (en) 2007-07-25
GB2436249A (en) 2007-09-19
GB2404266A (en) 2005-01-26
KR20050011149A (ko) 2005-01-29
GB0415567D0 (en) 2004-08-11
US20050022192A1 (en) 2005-01-27
GB2404266B (en) 2007-08-22
GB0711657D0 (en) 2007-07-25
TW200516404A (en) 2005-05-16
GB2436250A (en) 2007-09-19

Similar Documents

Publication Publication Date Title
US11288213B2 (en) Memory protection with hidden inline metadata
US9519596B2 (en) Resource access control in a system-on-chip
CN109002706B (zh) 一种基于用户级页表的进程内数据隔离保护方法和系统
US7685401B2 (en) Guest to host address translation for devices to access memory in a partitioned system
US9747218B2 (en) CPU security mechanisms employing thread-specific protection domains
US9355262B2 (en) Modifying memory permissions in a secure processing environment
US7620766B1 (en) Transparent sharing of memory pages using content comparison
US8386750B2 (en) Multiprocessor system having processors with different address widths and method for operating the same
US6907510B2 (en) Mapping of interconnect configuration space
US7509391B1 (en) Unified memory management system for multi processor heterogeneous architecture
US8041920B2 (en) Partitioning memory mapped device configuration space
US7036122B2 (en) Device virtualization and assignment of interconnect devices
US20130297901A1 (en) Memory protection circuit, processing unit, and memory protection method
KR100591755B1 (ko) 복수의 스레드를 동시에 처리하는 장치 및 방법
US20080034179A1 (en) Guard bands in very large virtual memory pages
KR20080080594A (ko) 메모리 액세스 데이터 구조에 기초하는 직접 캐시 액세스트랜잭션의 수행
CN106557302B (zh) 数据处理器
US8006055B2 (en) Fine granularity hierarchiacal memory protection
US20210200858A1 (en) Executing code in protected memory containers by trust domains
JP2005044363A (ja) 複数のスレッドを同時に処理する装置及び方法
TWI807094B (zh) 記憶體存取控制
Zhou et al. Towards virtual memory support in real-time and memory-constrained embedded applications: the interval page table
US20220100871A1 (en) Scalable multi-key memory encryption
US20220327063A1 (en) Virtual memory with dynamic segmentation for multi-tenant fpgas
TW202403562A (zh) 用於記憶體位址空間之頁面的「讀值只有x」性質

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E90F Notification of reason for final refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20090514

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee