KR100591755B1 - 복수의 스레드를 동시에 처리하는 장치 및 방법 - Google Patents
복수의 스레드를 동시에 처리하는 장치 및 방법 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 142
- 238000012545 processing Methods 0.000 title claims description 7
- 230000015654 memory Effects 0.000 claims abstract description 173
- 238000013519 translation Methods 0.000 claims abstract description 21
- 101500019086 Ustilago maydis P6 virus KP6 killer toxin subunit alpha Proteins 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000000593 degrading effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation 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/5016—Allocation 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1027—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
- G06F12/1036—Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB] for multiple virtual address spaces, e.g. segmentation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Advance Control (AREA)
- Multi Processors (AREA)
Abstract
본 발명은 마이크로프로세서에 관한 것이다.
본 발명의 특징은 마이크로프로세서에서 프로세스에 가상메모리를 할당하는데 있어서 프로세스 내에 있는 각각의 스레드들에도 독립적인 메모리공간을 할당하는데 있다.
프로세스에 프로세스메모리공간과 스레드메모리공간을 독립적으로 할당함으로써 스레드간의 메모리 충돌이나 프로그램의 보안문제를 방지할 수 있으며, 특히 프로그래머가 프로그래밍시 메모리를 관리하는데 드는 노력을 절감할 수 있도록 해주는 효과가 있다.
마이크로프로세서, 프로세스, 스레드, 가상메모리, 어드레스변환참조버퍼
Description
도 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)
- 복수의 프로세스들을 동시에 처리하는 마이크로프로세서에 있어서,상기 복수의 프로세스들에 할당되는 적어도 하나의 프로세스 메모리와;상기 프로세스 메모리와 독립적이고, 상기 복수의 프로세스들 내의 복수의 스레드들 각각에 할당되는 복수의 스레드 메모리들; 그리고상기 스레드 메모리들의 가상 메모리 어드레스를 물리적 메모리 어드레스로 변환하기 위한 변환 참조 버퍼를 포함하되,상기 변환 참조 버퍼는 스레드 ID, 상기 프로세스 메모리와 상기 스레드메모리를 독립적으로 구성하기 위한 스레드 비트 및 가상 메모리 페이지 번호를 포함하는 태그 유닛과;물리적 메모리 페이지 번호, 상기 태그 유닛에 대응하는 데이터 유닛; 그리고상기 가상 메모리 어드레스를 상기 물리적 메모리 어드레스로 변환하기 위해 사용되는 데이터 유닛을 포함하는 것을 특징으로 하는 마이크로프로세서.
- 제 1 항에 있어서,상기 복수의 스레드 메모리들 각각은 대응하는 스레드에 할당되는 것을 특징으로 하는 마이크로프로세서.
- 제 1 항에 있어서,상기 프로세스 메모리는 복수의 스레드들에 의해서 사용되는 것을 특징으로 하는 마이크로프로세서.
- 복수의 프로세스들을 동시에 처리하는 마이크로프로세서에 가상 메모리를 할당하는 방법에 있어서:프로세스 메모리를 복수의 대응하는 프로세스들에 할당하는 단계; 그리고스레드 메모리들을 복수의 대응하는 프로세스들 내의 스레드들에 할당하는 단계를 포함하되;상기 스레드 메모리들은 상기 프로세스 메모리와 독립적인 것을 특징으로 하는 마이크로프로세서에 가상 메모리를 할당하는 방법.
- 제 4 항에 있어서,상기 스레드 메모리들 각각은 대응하는 스레드에 할당되는 것을 특징으로 하는 마이크로프로세서에 가상 메모리를 할당하는 방법.
- 제 4 항에 있어서,상기 프로세스 메모리는 상기 스레드들에 의해서 사용되는 것을 특징으로 하는 마이크로프로세서에 가상 메모리를 할당하는 방법.
- 삭제
- 제 1 항에 있어서,상기 태그 유닛은 프로세스 ID를 포함하는 것을 특징으로 하는 마이크로프로세서.
- 제 2 항에 있어서,상기 스레드 비트는 상기 가상메모리 어드레스가 프로세스메모리 또는 스레드메모리의 어드레스 인지를 판별하기 위한 것임을 특징으로 하는 마이크로프로세서.
- 적어도 하나의 스레드를 갖는 프로세스에 대응하는 프로세스 메모리; 그리고상기 프로세스 메모리와 독립적이고, 상기 적어도 하나의 스레드에 대응하는 스레드 메모리를 포함하되;상기 프로세스 및 상기 적어도 하나의 스레드는 상기 프로세스 메모리에 접근하는 장치.
- 적어도 하나의 프로세스 메모리 및 적어도 두 개의 스레드 메모리들을 구비한 가상 메모리를 포함하되;상기 적어도 두 개의 스레드 메모리들 각각은 별개의 스레드들에 대응하고, 상기 적어도 하나의 프로세스 메모리로부터 독립적인 장치.
- 제 11 항에 있어서,상기 스레드 메모리들은 다른 스레드 메모리들에 접근하지 않고, 상기 적어도 하나의 프로세스 메모리에만 접근하며, 상기 스레드 메모리들은 상기 적어도 하나의 프로세스 메모리에 의해서만 접근되는 장치.
- 제 11 항에 있어서,상기 적어도 하나의 프로세스 메모리에 의해서 접근되는 상기 스레드 메모리들은 독출 동작을 포함하는 장치.
- 제 11 항에 있어서,상기 적어도 두 개의 스레드들 중 하나에 접근하기 위해 상기 적어도 하나의 프로세스 메모리는 상기 두 개의 스레드들 중 다른 하나에 의해서 사용되는 장치.
- 제 13 항에 있어서,상기 적어도 하나의 프로세스 메모리는 상기 복수의 스레드들 중 어느 하나를 접근하기 위해 상기 적어도 두 개의 스레드들 중 하나에 의해서 사용되는 메모리인 장치.
- 가상 메모리를 할당하기 위한 방법에 있어서:적어도 하나의 프로세스를 프로세스 메모리에 할당하는 단계; 그리고상기 프로세스 내 적어도 하나의 스레드를 스레드 메모리에 할당하는 단계를 포함하되; 상기 스레드 메모리는 상기 프로세스 메모리와 독립적인 가상 메모리 할당 방법.
- 가상 메모리 어드레스를 물리적 메모리 어드레스로 변환하는 방법에 있어서:스레드 비트의 값을 판별하는 단계; 그리고상기 판별된 스레드 비트 값에 따라서 스레드 메모리 또는 프로세스 메모리 내 동작을 수행하는 단계를 포함하는 어드레스 변환 방법.
- 제 17 항에 있어서,상기 판별된 스레드 비트 값은 스레드 동작을 수행하는 것에 의해 결정되고, 상기 스레드 동작은 대응하는 스레드 메모리 내에서 수행되는 어드레스 변환 방법.
- 제 17 항에 있어서,상기 판별된 스레드 비트 값은 데이터, 메시지 또는 파라메터 가운데 적어도 하나를 전송하기 위한 상기 프로세스 메모리를 사용하는 동작을 수행하는 것에 기인하는 어드레스 변환 방법.
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) | GB2404266B (ko) |
TW (1) | TW200516404A (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100899097B1 (ko) | 2007-05-11 | 2009-05-25 | 한국과학기술원 | 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치 |
Families Citing this family (11)
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 |
EP2997478B1 (en) | 2014-07-21 | 2019-03-13 | VIA Alliance Semiconductor Co., Ltd. | Efficient address translation caching in processor that supports large number of different address spaces |
US9886393B2 (en) | 2016-04-13 | 2018-02-06 | At&T Mobility Ii Llc | Translation lookaside buffer switch bank |
Family Cites Families (15)
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 |
EP1658563B1 (en) * | 2003-08-28 | 2013-06-05 | MIPS Technologies, Inc. | Apparatus, and method for initiation of concurrent instruction streams in a multithreading microprocessor |
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 |
-
2003
- 2003-07-22 KR KR1020030050123A patent/KR100591755B1/ko not_active IP Right Cessation
-
2004
- 2004-05-07 US US10/840,374 patent/US20050022192A1/en not_active Abandoned
- 2004-07-07 TW TW093120300A patent/TW200516404A/zh unknown
- 2004-07-12 GB GB0415567A patent/GB2404266B/en not_active Expired - Fee Related
- 2004-07-12 GB GB0711658A patent/GB2436250A/en not_active Withdrawn
- 2004-07-12 GB GB0711657A patent/GB2436249A/en not_active Withdrawn
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100899097B1 (ko) | 2007-05-11 | 2009-05-25 | 한국과학기술원 | 복수의 인덱싱 정보를 제공하는 방법 및 이를 이용한 캐쉬메모리 장치 |
Also Published As
Publication number | Publication date |
---|---|
KR20050011149A (ko) | 2005-01-29 |
GB2436249A (en) | 2007-09-19 |
GB2404266A (en) | 2005-01-26 |
GB0415567D0 (en) | 2004-08-11 |
GB2404266B (en) | 2007-08-22 |
GB0711657D0 (en) | 2007-07-25 |
US20050022192A1 (en) | 2005-01-27 |
GB2436250A (en) | 2007-09-19 |
TW200516404A (en) | 2005-05-16 |
GB0711658D0 (en) | 2007-07-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
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 | |
US20190227951A1 (en) | Memory protection with hidden inline metadata | |
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 | |
US20220327063A1 (en) | Virtual memory with dynamic segmentation for multi-tenant fpgas | |
TWI807094B (zh) | 記憶體存取控制 | |
US20220100871A1 (en) | Scalable multi-key memory encryption | |
JP2005044363A (ja) | 複数のスレッドを同時に処理する装置及び方法 | |
Zhou et al. | Towards virtual memory support in real-time and memory-constrained embedded applications: the interval page table | |
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 |