MULTIPLE-PROCESSOR (MP) INITIALIZATION

박한범 2010.11.04 09:40 조회 수 : 6544

 

 

영문을 그냥 읽는 재주는 없어서

제가 읽을겸 일부 번역해봤습니다.

 

백창우님이 말씀하신 내용이 어떤건지 조금은 알것 같습니다.

 

준비되는대로 보강된 질문 올리겠습니다 ^^;;

 

 

 

 

 

 

8.4 MULTIPLE-PROCESSOR (MP) INITIALIZATION

IA-32 아키텍처는 ( P6 패밀리 프로세서부터 시작된 ) 다중프로세서(MP) 초기화 프로토콜을 정의하고 Multiprocessor Specification Version이라고 부른다. 명세서는 IA-32 다중프로세서 시스템에서 boot 프로토콜을 정의한다. MP 초기화 프로토콜 다음과 같은 중요한 특징이 있다 :

시스템 하드웨어에 전용 요청이 없이 다중프로세서의 부팅 제어를 지원한다.

시스템이 부팅되면서 하드웨어를 초기화 하는 것이 signal 의존 혹은 부트 프로세서에 미리 정의됨 없이 가능케 한다.

IA-32 프로세들은 같은 방법으로 부트되고 이는 Intel Hyper-Threading 기술을 포함한다.

• MP 초기화 프로토콜은 또한 Intel 64프로세서의 사용에도 적용된다.


MP
초기화 프로토콜의 IA-32 프로세서 패밀리별 차이점은 다음과 같습니다 :

For P6 family processors — BSP APs selection  (see Section

8.4.1, “BSP and AP Processors”) APIC 버스에서 BIPI FIPI 메시지를 사용한 중재로 제어된다.
See Appendix C, “MP Initialization For P6 Family Processors,”
for a complete discussion of MP initialization for P6 family

processors.

Intel Xeon processors with family, model, and stepping IDs up to F09H

위와 동문. The selection of the BSP and APs (see Section 8.4.1, “BSP and AP Processors”) is

handled through arbitration on the system bus, using BIPI and FIPI messages

(see Section 8.4.3, “MP Initialization Protocol Algorithm for

Intel Xeon Processors”).

Intel Xeon processors with family, model, and stepping IDs of F0AH and

beyond, 6E0H and beyond, 6F0H and beyond — BSP APs selection  (see Section

8.4.1, “BSP and AP Processors”) BIPI FIPI 중재에 의함이 아닌 특별한 시스템 버스 사이클에 의해 제어된다.

(see Section 8.4.3, “MP Initialization Protocol Algorithm for Intel Xeon Processors”).


패밀리, 모델, 스테핑 ID CPUID 명령을 EAX 레지스터 1 함께 실행시켰을 EAX레지스터로 받을 있다.

 

8.4.1 BSP and AP Processors

MP 초기화 프로토콜은 프로세서의 클래스를 정의했다 : the bootstrap processor (BSP) the application processor (APs). 전원인가나 Reset 따라 MP system 동적으로 시스템 버스상의 하나의 프로세서를 BSP 삼는다. 남은 프로세서들은 APs 지정된다.

 

BSP 선택 메카니즘의 부분으로, BSP flag IA32_APIC_BASE_MSR( see Figure 10-5 ) 세팅되고, 이것이 BSP 나타낸다. flag 다른 프로세서들에서는 clear된다. BSP BIOS boot-strap 코드를 수행해 APIC 환경을 설정하고, 시스템-wide 데이터 구조체들을 설정하고, APs 들의 초기화를 시작한다. BSP APs 초기화 됐을때, BSP 운영체제-시스템 초기화 코드를 실행한다.


전원인가나 reset 따라, APs 최소한의 자가-설정을 완료하고, startup signal ( a SIPI 메시지 ) BSP 프로세서로부터 오기를 기다린다. SIPI 메시지를 전달받은 후에, AP BIOS AP 설정 코드를 실행하고,  which ends with the AP being placed in halt state.


Intel 64
IA-32 프로세서들을 위해 Intel Hyper-Threading 기술( 이하 HT ) 지원되고, MP 초기화 프로토콜은 시스템 버스 상의 논리적 프로세서들이나 논리적연결영역으로(coherent link domain) 구분되는 프로세서( 유일 APIC ID 함께 ) 각각 대우한다. Bootup 되는 동안 하나의 논리적 프로세서가 BSP 선택되고 남은 논리 프로세서가 Aps 지정되게 된다.

 

8.4.2 MP Initialization Protocol Requirements and Restrictions

 

MP 초기화 프로토콜은 다음의 시스템 요구조건과 제약사항들을 강요한다.

MP 프로토콜은 전원인가나 RESET 후에만 실행되야 한다. 만약 MP 프로토콜이 완료되고 BSP 선택되어 있다면, 다음 INITs( 특정 프로세서나 시스템광범위하게 ) 에서 MP 프로토콜이 반복되면 안된다. 대신 논리적 프로세서는 자신의 BSP flag(in the IA32_APIC_BASE MSR ) 검사하고 자신이 BIOS boot-strap code 실행하던가 ( 만약 자신이 BSP라면 ) wait-for-SIPI 상태( 만약 자신이 AP라면 ) 것인지를 결정한다.

시스템의 모든 인터럽트를 전달시킬 능력이 있는 디바이스들은 MP 초기화 프로토콜의 진행 동안에는 억제된다. BSP INIT-SIPI-SIPI AP에게 순서대로 발생시키고 마지막 SIPI 흐름에 대한 응답이 있을 때까지의 시간이 흐르는 동안 인터럽트들은 억제된다.

 

8.4.3 MP Initialization Protocol Algorithm for Intel Xeon Processors

전원인가나 RESET MP 시스템에서 발생함에 따라, 시스템의 프로세서들은 MP 초기화 프로토콜 알고리즘을 실행해 시스템 버스 상의 논리적 프로세서와 논리적연결영역의 프로세서들을 초기화한다. 알고리즘을 수행하는 과정에서 다음에 오는 boot-up 초기화 동작들이 수행된다 :

 

1. 논리적 프로세서는 시스템 topology 기반한 유일한 APIC ID 배정받는다. 유일ID 프로세서가 CPUID 0BH 구문을 지원한다면 32-bit 값을 갖고 아닌 경우에는 8-bit 값을 갖는다.

(see Section 8.4.5, “Identifying Logical Processors in an MP System”).

ID 프로세서의 local APIC ID 레지스터에 기록된다.

 

2. 논리적 프로세서는 자신의 APIC ID 기준해 유일한 중재 우선순위 값을 갖는다.

 

3. 논리적 프로세서는 그들의 내부 BIST 시스템 버스 상의 다른 프로세서들과 동시에 실행한다.

 

4. BIST 완료된 후에,  논리적 프로세서들은 하드웨어-정의에 따른 선택 메커니즘으로 BSP Aps 사용 가능한 시스템 버스 상의 논리 프로세서에서 선택한다. BSP 선택 메커니즘은 family, model, F0AH stepping ID 따라 다르다. 계속해서 보면 :

 

— Family, model, and stepping IDs of F0AH and onwards:

논리적 프로세서들은 BNR# signal 모니터링 하기 시작하는데 이는 toggling이다. BNR# pin toggling 멈췄을 , 프로세서는 NOP 이라는 특별한 사이클을 시스템 버스에 발생시킨다.

최고의 중재 권한을 가진 논리적 프로세서가 특별한 NOP 사이클을 발생시키고 BSP 임명된다. 프로세서는 BSP flag( IA32_APIC_BASE MSR ) 세팅하고, 뒤에 BIOS boot-strap code fetch 실행이 이뤄지고, 시작지점은 reset vector이다 ( 물리 주소 FFFF FFF0H )

남은 논리 프로세서들은 ( NOP발생에 실패한 ) Aps 설정된다. 그들은 자신들의 BSP flag clear 상태로 만들고 “wait-for-SIPI 상태 돌입한다.

 

— Family, model, and stepping IDs up to F09H:

프로세서는  자신의 모든 것을 포함한” BIPI 방송한다. 가장 먼저 BIPI 방송한 프로세서는( 그리고 그러므로 자기 스스로의 BIPI vector 수신한다. ), 자기 스스로를 BSP 선택하고 자신의 IA32_APIC_BASE MSR 있는 BSP flag 세팅한다.

(See Appendix C.1, “Overview of the MP Initialization Process For P6 Family Processors,” for a description of the BIPI, FIPI, and SIPI messages.)

남은 논리 프로세서들은 ( NOP발생에 실패한 ) Aps 설정된다. 그들은 자신들의 BSP flag clear 상태로 만들고 “wait-for-SIPI 상태 돌입한다.

가장 최근에 인정된 BSP 자신의 모든 것을 포함한” FIPI 메시지를 방송하며, 이는 BSP Aps 에게 MP 초기화가 끝난 signal 여겨지게 된다. 오직 BSP flag 세팅된 프로세서만이 FIPI 메시지에 대답할 있다. 응답은 BIOS boot-strap code 해석과 실행으로 수행되며, 시작지점은 reset vector ( 물리주소 FFFF FFF0H ) 이다.

5. boot-strap code 부분으로, BSP ACPI 테이블, MP table 만들고 자신의 초기화된 APIC ID 테이블에 적절히 추가한다.

6. boot-strap 프로시저의 마무리에, BSP processor counter 1 세팅하고 SIPI 메시지를 모든 시스템 상의 APs 들에게 보낸다. 여기서, SIPI 메시지는 BIOS AP 초기화 코드의 vector 포함하고 있다. ( 000VV000H VV SIPI 메시지에 포함된 벡터 )

7. AP 초기화 코드의 동작은 BIOS 초기화 semaphore 대한 AP 간의 경쟁이다.

 

 

 

세마포어의 번째AP 초기화 코드를 수행하기 시작한다. (See Section 8.4.4, “MP Initialization Example,” for semaphore implementation details.)

AP 초기화 프로시저의 부분으로 AP 자신의 APIC ID 넘버를 ACPI MP table 적절하게 추가하고 processor counter 1 증가시킨다(increments the processor counter by 1). 초기화 프로시저가 완료되고, AP CLI 명령을 수행하고 스스로 halts 된다.

8. APs 세마포어에 대한 접근 권한을 얻고 AP 초기화 코드를 수행할 , BSP 시스템 버스에 연결되어 있는 프로세서의 숫자를 세고, BIOS boot-strap code 완료되면 운영체제-시스템 boot-strap start-up 코드를 실행하기 시작한다.

9. BSP 운영체제-시스템 boot-strap start-up코드를 실행하는 동안, APs 계속 halted 상태를 유지하고 있는다. 상태는 오직 INITs, NMIs, SMIs 대해서만 반응한다. 또한 STPCLK# pin 따른 동작과 이를 살펴보는 것에도 반응한다.( They will also respond to snoops and to assertions of the STPCLK# pin.) 이어지는 섹션에서 MP 초기화 프로토콜이 다중 Intel Xeon 프로세서들에서 MP 설정을 하는 과정을 예제( 코드와 함께 ) 다룰 것이다.

 

Appendix B, “Model-Specific Registers (MSRs),” describes how to program the LINT[0:1] pins of the processor’s local APICs after an MP configuration has been completed.

 

8.4.4 MP Initialization Example

다음의 예는 MP 초기화 프로토콜이 BSP APs 설정된 후에 MP 시스템에서 프로세서를 초기화 하는데 사용되는 과정을 그려보기 위함이다. 코드는 Intel 64 프로토콜을 사용하는 IA-32 프로세서에서 동작하는 코드이다. 이는 P6 패밀리 프로세서를 포함하고, 펜티엄 4 프로세서들, 인텔 코어 듀오, 인텔 코어 2 듀오와 인텔 제온 프로세서들도 포함한다.

 

다음의 상수와 데이터 정의는 코드 예제와 함께 사용된다. 이들은 Table 10-1에서 정의된 APIC 주소들에 기반을 두고 있다. ( Table 10-1 별도 첨부 )

 

ICR_LOW EQU 0FEE00300H

SVR EQU 0FEE000F0H

APIC_ID EQU 0FEE00020H

LVT3 EQU 0FEE00370H

APIC_ENABLED EQU 0100H

BOOT_ID DD ?

COUNT EQU 00H

VACANT EQU 00H

 

8.4.4.1 Typical BSP Initialization Sequence

BSP APs 선택된 후에 (by means of a hardware protocol, see Section 8.4.3, “MP Initialization Protocol Algorithm for Intel Xeon Processors” ) 일반적인 IA-32 아키텍쳐라면BSP BIOS boot-strap code(POST) 실행하기 시작한다. 시작 주소는 (FFFF FFF0H). boot-strap code 일반적으로 다음과 같은 동작을 수행한다.

 

1. 메모리 초기화

2. microcode 로드와 프로세서로의 갱신

3. MTRRs 초기화.

4. caches 활성화

5. EAX 레지스터 0H 값과 함께 CPUID 명령을 실행한 , EBX, ECX, EDX 레지스터를 읽고 BSP “GenuineIntel”인지를 판단한다.

6. EAX 레지스터 1H 값과 함께 CPUID 실행하고 EAX, ECX, EDX 레지스터에 있는 값을 램에 있는 시스템 설정 공간에 저장해서 나중에 사용한다.

7. AP 실행하기 위한 start-up 코드를 메모리의 1MByte 하단 4-Kbyte page 불러온다.

8. 보호 모드로 전환하고 APIC 주소 공간을 캐쉬할 없는 공간으로 맵한다.

9. local APIC ID 레지스터( 기본값 0 ) 에서 BSP APIC ID 결정, 하단의 코드 조각은 시스템 상의 논리적 프로세서에 적용할 예제이다. ( 메모리 인터페이스를 사용해 APIC 레지스터에 access하는 (xAPIC 모드에서 동작하는Local APIC 유닛))

 

MOV ESI, APIC_ID; Address of local APIC ID register

MOV EAX, [ESI];

AND EAX, 0FF000000H; Zero out all other bits except APIC ID

MOV BOOT_ID, EAX; Save in memory

 

APIC ID ACPI MP 테이블에 저장하고 선택적으로 상의 시스템 설정 공간에도 저장한다.

10. 4-KByte페이지의 베이스 주소를 AP bootup code 위해 8-bit 벡터 값으로 바꾼다. 8-bit 벡터는 실제-주소 모드 주소 공간(1-MByte 주소) 에서의 4-Kbyte 페이지에 대한 주소의 정의다. 예를 들면 벡터 0BDH start-up 메모리 주소 000BD000H 나타낸다.

 

11. APIC spurious vector register (SVR) bit 8 세팅해서 local APIC 활성화 시킨다.

 

MOV ESI, SVR; Address of SVR

MOV EAX, [ESI];

OR EAX, APIC_ENABLED; Set bit 8 to enable (0 on reset)

MOV [ESI], EAX;

 

12. APIC 에러 핸들러에 8-bit vector LVT 에러 핸들링 엔트리를 설정한다.

 

MOV ESI, LVT3;

MOV EAX, [ESI];

AND EAX, FFFFFF00H; Clear out previous vector.

OR EAX, 000000xxH; xx is the 8-bit vector the APIC error handler.

MOV [ESI], EAX;

 

13. Lock 세마포어 변수 VACANT 00H 초기화 한다. APs 세마포어를 사용해서 BIOS AP 초기화 코드를 실행하는 순서를 결정할 있다.

14. 시스템 상에 APs 존재와 프로세서의 숫자를 BSP 탐지하게끔 다음에 오는 동작들을 수행한다.

— COUNT 변수를 1 세팅한다.

— timer 시작한다. ( 거의 100밀리세컨드 간격으로 ). AP BIOS 초기화 코드에서, AP COUNT 변수를 증가시켜 자신의 존재를 나타낸다. Timer 만료되었을 , BSP COUNT 변수를 체크한다. 만약 Timer 만료되었고 COUNT 변수가 증가되지 않았다면, APs 존재하지 않거나 뭔가 문제가 발생한 것이다.

15. INIT-SIPI-SIPI IPI 흐름을 방송해서 AP들이 깨어나게 하고 그들을 초기화 시킨다.

 

MOV ESI, ICR_LOW; Load address of ICR low dword into ESI.

MOV EAX, 000C4500H; Load ICR encoding for broadcast INIT IPI

; to all APs into EAX.

MOV [ESI], EAX; Broadcast INIT IPI to all APs

; 10-millisecond delay loop.

MOV EAX, 000C46XXH; Load ICR encoding for broadcast SIPI IP

; to all APs into EAX, where xx is the vector computed in step 10.

MOV [ESI], EAX; Broadcast SIPI IPI to all APs

; 200-microsecond delay loop

MOV [ESI], EAX; Broadcast second SIPI IPI to all APs

; 200-microsecond delay loop

Step 15:

MOV EAX, 000C46XXH; Load ICR encoding from broadcast SIPI IP

; to all APs into EAX where xx is the vector computed in step 8.

 

16. Timer 인터럽트를 기다린다.

17. COUNT 변수를 읽고 판단해서 프로세서의 개수를 결정한다.

18. 필요하다면, APIC 재설정하고 남은 시스템 진단을 계속 수행한다.

 

8.4.4.2 Typical AP Initialization Sequence

AP SIPI 받으면, SIPI encode 되어있는 vector 있는 BIOS AP 초기화 코드를 실행하게 된다. AP 초기화 코드는 일반적으로 다음과 같은 동작을 수행한다.

1. BIOS 초기화 Lock Semaphore 기다린다. 세마포어의 제어권을 얻은 , 초기화를 계속한다.

2. microcode update 프로세서로 로드한다.

3. MTRRs 초기화한다. ( BSP에서 사용됐던 맵핑 방식이 그대로 사용된다. )

4. 캐쉬를 활성화 한다.

5. EAX 레지스터 0H 값과 함께 CPUID 명령을 실행한 , EBX, ECX, EDX 레지스터를 읽고 BSP “GenuineIntel”인지를 판단한다.

6. EAX 레지스터 1H 값과 함께 CPUID 실행하고 EAX, ECX, EDX 레지스터에 있는 값을 램에 있는 시스템 설정 공간에 저장해서 나중에 사용한다.

7. 보호 모드로 전환해서 APIC 주소 공간을 하는걸 보장한다.

8. local APIC ID 레지스터로부터 AP APIC ID 결정하고, 이를 MP ACPI 테이블에 추가하며 선택사항으로 RAM 존재하는 시스템 설정 공간에 저장한다.

9. SVR 레지스터의 bit 8 세팅해서 local APIC 초기화와 설정을 그리고 에러 핸들링을 위해 LVT3(에러 LVT) 세팅한다. (as described in steps 9 and 10 in Section 8.4.4.1, “Typical BSP Initialization Sequence”).

10. AP들의 SMI 실행 환경을 설정한다. ( AP BSP 반드시 각각의 다른 SMBASE 주소가 있어야 한다. )

11. COUNT 변수를 1 증가시킨다.

12. semaphore 풀어준다.

13. CLI HLT 명령어를 실행한다.

14. INIT IPI 기다린다.

 

8.4.5 Identifying Logical Processors in an MP System

BIOS MP 초기화 프로토콜을 완료하고 뒤에, 논리적 프로세서는 자신의 local APIC ID 유일하게 식별될 있다. 소프트웨어는 다음의 방법들로 APIC ID들에 접근할 있다.

Read APIC ID for a local APIC 논리 프로세서에서 실행 중인 코드는 local APIC unit x2APIC(see Intel® 64 Architecture x2APIC Specification) 모드인가 아니면 xAPIC 모드인가에 따라서 다른 방법으로 APIC ID 읽을 있다.

 

만약 local APIC unit x2APIC 지원하고 x2APIC 모드에서 동작 중이라면, 32-bit APIC ID RDMSR 명령을 수행해서 프로세서의 x2APIC ID 레지스터를 읽어올 있다. 방법은 아래서 설명하는 CPUID (leaf) 0BH 수행하는 방법과 동일하다.

만약 local APIC unit xAPIC 모드에서 동작 중이라면, 8-bit APIC ID 프로세서의 local APIC ID 레지스터를 MOV 명령을 수행해 얻을 있다. (see Section 10.4.6, “Local APIC ID”) 이것이 물리적인 목적지 모드 인터럽트들이 직접적으로 프로세서를 찾아갈 사용되는 ID이다. (This is the ID to use for directing physical destination mode interrupts to the processor.)

Read ACPI or MP table — MP 초기 프로토콜의 부분으로, BIOS ACPI MP 테이블을 생성한다. 테이블들은 Multiprocessor Specification Version 1.4 정의되어 있으며 소프트웨어에게 시스템과 그들의 local APIC ID들에 있는 프로세서 리스트를 제공해준다. ACPI 테이블은 ACPI 명세에 따라 형식이 결정되고, 이에 대해서 산업표준전원관리와 MP 시스템들의 플랫폼 환경 명세가 있다.

Read Initial APIC ID (만약 프로세서가CPUID leaf 0BH 지원하지 않는다면) —

APIC ID 전원인가 동안 논리 프로세서에게 배정된다. 초기 APIC ID CPUID.1:[31:24] 의해 보고된다. 그리고 local APIC에서 읽어 들인 현재 값과 다를 있다. 초기 APIC ID 멀티-프로세서 시스템이 CPUID leaf 0BH 지원하지 않을 논리 프로세서들간의 관계 topological 알아내는데 사용될 있다.

초기 APIC ID 비트 8-bit 여러가지 비트 마스크를 나타낼 있다. 비트 마스크는 MP 시스템에서 멀티-쓰레딩 자원의 topology hierarchical level 나타내는 이를 식별하는데 사용할 있다. (See Section 8.9.1, “Hierarchical Mapping of Shared Resources”). 초기 APIC ID 4비트-필드 이상으로 이루어져 있고, non-clustered MP 시스템이라면 3비트-필드 이상으로 이루어져 있다.

Read 32-bit APIC ID from CPUID leaf 0BH (만약 프로세서가CPUID leaf 0BH 지원한다면) — 유일한 APIC ID 전원인가 동안 논리 프로세서에 배정된다. APIC ID CPUID.0BH:EDX[31:0] 32-bit 값으로 전달받을 있다. 32-bit APIC ID CPUID leaf 0BH 사용해서 논리 프로세서들 간에 관계 topological 관계를 확인할 있다. – CPU CPUID leaf 0BH 지원한다면 말이다. 32-bit x2APIC ID bit들을 CPUID leaf 0BH 인자로 사용해 하위-필드를 추출할 있다. (See Section 8.9.1, “Hierarchical Mapping of Shared Resources”)

Figure 8-2 먼저 등장했던 싱글코어 프로세서들의 APIC ID bit 필드의 예를 보여주고 있다. 싱글코어 인텔 제온 프로세서에서, 논리 프로세서는 전원인가 동안 APIC ID 8-bit 배정받고 초기화된다. Bits 2:1 2-bit 물리 패키지 식별자를 나타낸다. ( 이는 socket 식별자로도 생각될 있다. ) 시스템의 물리프로세서 설정이 clusters 설정되었는지는, bits 4:3 2-bit cluster ID 나타내준다. Bit 0 인텔 제온 프로세서 MP 에서 논리 프로세서 패키지를 식별하기 위해 존재하지만(see Section 8.9.3, “Hierarchical ID of Logical Processors in an MP System”), 제온 프로세서는 인텔HT 기술을 지원하지 않기 때문에 항상 0이다. 인텔 제온 프로세서의 인텔 HT 기술을 지원을 위해서, bit 0 인텔 제온 프로세서 MP 같은 함수를 수행한다. 최근에 출시된 멀티 코어 프로세서들을 위해, Section 8.9,1 “Hierarchical Mapping of Shared Resources” 봐라. 논리적 프로세서들과 초기 APIC ID 인텔 64 IA-32 프로세서 패밀리의 bit 필드의 위치 사이에 대한 Topological 관계의 완전한 설명이 있다.

 

 

Bit 필드의 숫자와 bit-필드들의 넓이는 프로세서와 플랫폼 하드웨어에 의존적임을 알린다. 소프트웨어는 실행시간에 이들을 알아내야 한다. 초기 APIC ID들이 논리 프로세서들에게 배정되었을 , 논리 프로세서에 배정되는 APIC ID 값은 bit-필드의 경계크기와 코어, 물리 패키지, 기타 요소에 따라 변한다. 추가로 멀티-쓰레딩 가능 시스템의 초기 APIC ID 비트 필드 예제는 Section 8.9에서 있다.

 

Interpretation of APIC ID in Early MP Systems.jpg

 

P6 패밀리 프로세서를 위해서, APIC ID 전원인가 동안 4bits 초가화 되어 배정된다. ( figure 8-2 ) 여기서 bits 0 1 2-bit 프로세서(or socket) , bit 2-3 2-bit cluster ID 나타낸다.

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [공지] IAMROOT 19차 커널 스터디 오리엔테이션 (zoom 접속 안내) [5] 문c(문영일) 2022.05.07 867
공지 [공지] IAMROOT 18차 커널 스터디 오리엔테이션 안내 [마감] [2] 문c(문영일) 2021.05.17 1245
공지 커널 스터디를 위한 문c 가이드입니다. [10] 문c(문영일) 2021.04.27 6371
1037 세미나 진행사항 및 논의 사항 [42] 백창우 2009.02.23 6689
1036 5월 8일 어버이 날입니다. [1] 강진성 2010.05.04 6679
1035 Arndale Octa Board(5420) 판매 [12] 조성진 2013.11.08 6665
1034 오늘 처음 가입을 하였는데 GCC 세미나에 참석 하고 싶습니다. [1] 강진구 2009.03.16 6661
1033 코딩 가이드 라인 [5] 백창우 2008.01.29 6634
1032 멀티코어 세미나 자료를 다운받고 싶습니다. [1] 김종화 2007.06.06 6578
1031 세미나 참가 신청 받습니다. [51] 백창우 2008.03.31 6570
» MULTIPLE-PROCESSOR (MP) INITIALIZATION [4] file 박한범 2010.11.04 6544
1029 kernel & cell study 장소 및 시간 공지 [7] 백창우 2007.02.22 6522
1028 비밀 게시판에 제가 하고 싶은 이야기를 적어 놓았습니다. [5] 백창우 2011.07.30 6510
1027 스터디 오리엔테이션 "와우" [5] file 김성현2 2012.04.09 6509
1026 IBM Cell SDK 3.0이 나왔습니다. 백창우 2008.02.14 6504
1025 [GCC 세미나] 온라인 입금해주세요. [30] 백창우 2009.03.12 6483
1024 [KVM study] native() 함수의 비밀을 알아냈습니다. 좀 허무하군요. 김정수 2008.06.16 6478
1023 세미나 참여 하고 싶습니다. [8] 전남재 2008.02.04 6473
1022 축 리눅스 탄생 20주년!! [1] 유강희 2011.08.26 6456
1021 커널 배리어에 관하여(barrier) [5] 지승화 2012.05.04 6429
1020 Intel Nehalem Architecture 세미나 자료 file 백창우 2009.03.09 6423
1019 서버 ID 신청 [36] 백창우 2007.03.16 6393
1018 xen 코드는 lxr에 못올리나요? [1] 김기오 2008.01.31 6390
XE Login