플랫 메모리 모델
Flat memory model![]() |
플랫 메모리 모델 또는 리니어 메모리 모델은 "메모리가 단일 연속 주소 공간으로 프로그램에 [1]나타나는" 메모리 주소 지정 패러다임을 말합니다.CPU는 사용 가능한 모든 메모리 위치에 직접(및 선형으로) 주소를 지정할 수 있습니다.메모리 분할이나 페이징 스킴에 의존하지 않아도 됩니다.
메모리 관리 및 주소 변환은 플랫 메모리 모델 위에 구현하여 운영체제의 기능, 자원 보호, 멀티태스킹 처리를 용이하게 하거나 프로세서의 물리 주소 공간에 의해 부과되는 제한을 넘어 메모리 용량을 늘릴 수 있습니다.단, 플랫 메모리 모델의 주요 특징은전체 메모리 공간은 선형, 순차 및 연속입니다.
메모리 관리가 불필요하거나 바람직하지 않은 심플한 컨트롤러 또는 단일 태스크 임베디드 어플리케이션에서는 플랫 메모리 모델이 가장 적합합니다.플랫 메모리 모델은 프로그래머의 관점에서 가장 심플한 인터페이스를 제공하며 모든 메모리 위치에 직접 액세스하여 설계의 복잡성을 최소화합니다.
멀티태스킹, 자원 할당 및 보호가 필요한 범용 컴퓨터 시스템에서는 일반적으로 전용 하드웨어(CPU 내부 또는 외부)와 운영체제에 내장된 소프트웨어를 조합하여 구현되는 메모리 관리 스킴에 의해 플랫 메모리 시스템을 확장해야 합니다.플랫 메모리 모델(물리 어드레싱 레벨)은, 이러한 타입의 메모리 관리를 실장하기 위한 최대의 유연성을 제공합니다.
대부분의 프로세서 아키텍처는 모든 초기 8비트 프로세서, Motorola 68000 시리즈 등을 포함한 플랫 메모리 설계를 구현하고 있습니다.인텔 최초의 16비트 마이크로프로세서인 8086은 모든 주소를 16비트 이상으로 확장하지 않고도 64KiB 이상의 메모리에 액세스할 수 있는 조잡한 세그먼트 메모리 모델을 구현했습니다.
메모리 모델
![]() | 이 섹션은 목록 형식이지만 산문으로 더 잘 읽힐 수 있습니다.(2018년 8월) |
대부분의 최신 메모리 모델은 다음 세 가지 범주 중 하나로 나뉩니다.
플랫 메모리 모델
- 프로그래머를 위한 심플한 인터페이스, 깔끔한 디자인
- 균일한 액세스 속도에 의한 최대의 유연성(세그먼트 메모리 페이지 스위치는 보통 페이지 변경 시 추가 CPU 로직 또는 하드웨어 요건에 의해 다른 페이지의 액세스 시간이 길어지기 때문에 다양한 레이텐시가 발생합니다)
- 심플한 컨트롤러 애플리케이션을[clarification needed] 위한 최소한의 하드웨어 및 CPU 공간
- 최대 실행[why?] 속도
- 메모리 관리 하드웨어/소프트웨어를 증설하여 확장하지[why?] 않는 한 일반적인 컴퓨팅 또는 멀티태스킹 운영체제에는 적합하지 않습니다.다만, 최신의 CISC 프로세서는, 플랫 메모리 모델에 고도의 메모리 관리와 보호 테크놀로지를 실장하고 있습니다.Linux 에서는 플랫 메모리 모델을 사용하고 있습니다(x86 메모리 세그멘테이션 #프랙티스를 참조해 주세요.
페이지 메모리 모델
- 멀티태스킹, 일반 운영체제 설계, 자원 보호 및 할당에 적합
- 가상 메모리 구현에 적합
- CPU 사용률 증가, 속도 저하
- 프로그래밍이 더 복잡함
- 페이지 경계가 경직되어 있어 메모리 효율이 가장 뛰어난 것은 아닙니다.
- 이것은 36비트 주소를 사용하여 메모리를 주소 지정할 때 32비트 주소 지정 모드에서 사용하는 메모리 모델 Pentium Pro 및 최신 x86 CPU입니다.물리 주소 확장이라고 불립니다.
X86 세그먼트 메모리 모델
- 페이징은 페이징 메모리와 비슷하지만 상대적으로 시프트된 두 레지스터(segment: offset)를 암묵적으로 추가하여 이루어집니다.
- 페이지 경계가 다양하여 페이징된 메모리 모델보다 효율적이고 유연함
- 프로그래머 입장에서 보면 상당히 복잡하고 어색하다.
- 컴파일러가 어려워지다
- 페이지가 중복되거나 리소스 보호 및 분리 상태가 불량할 수 있음
- 다대1 주소 변환 대응:많은 세그먼트: 오프셋의 조합은 동일한 물리 주소로 해결됩니다.
- 프로그래밍 오류 발생 가능성 증가
- 인텔 8086, 8088, 80186, 80286에 실장되어 80386 및 이후의 모든 x86 머신에서 현재까지의 Pentium 및 Core 2 프로세서에 이르기까지 지원되고 있습니다.이 메모리 모델은 x86 머신에서 계속 유지되고 있습니다.x86 머신은 멀티 모드 동작을 제공하며 호환성이 있는 세그먼트 모드에서는 [clarification needed]거의 동작하지 않습니다.상세한 것에 대하여는, x86 메모리 세그먼트화를 참조해 주세요.
x86 아키텍처 내에서 실제 모드(또는 에뮬레이션)로 동작하는 경우 물리 주소는 다음과 [2]같이 계산됩니다.
- 주소 = 16 × 세그먼트 + 오프셋
(즉, 16비트 세그먼트 레지스터는 왼쪽으로 4비트 이동되고 16비트 오프셋에 추가되어 20비트 주소가 됩니다.)
「 」를 참조해 주세요.
레퍼런스
- ^ Gonzalez, Antonio; Latorre, Fernando; Magklis, Grigorios (2011). Processor Microarchitecture: An Implementation Perspective. Morgan & Claypool Publishers. p. 72. ISBN 9781608454525.
- ^ Real Mode의 일반적인 설명 "물리 주소는 Value_in_segment_register로 계산할 수 있습니다.
- 16 + Value_in_offset_register.