제자리 실행
Execute in place컴퓨터 과학에서 XIP(Execute in place)는 RAM에 복사하지 않고 장기 저장소에서 직접 프로그램을 실행하는 방법입니다.이는 공유 메모리를 사용하여 필요한 총 메모리 양을 줄이는 확장입니다.
일반적인 효과는 프로그램 텍스트가 쓰기 가능한 메모리를 소비하지 않고 동적 데이터를 위해 저장되며 프로그램의 모든 인스턴스가 단일 복사본에서 실행됩니다.
이 기능이 작동하려면 다음과 같은 몇 가지 기준을 충족해야 합니다.
- 스토리지는 일반 메모리와 유사한 인터페이스를 CPU에 제공해야 합니다(또는 적응 계층이 있어야 합니다).
- 이 인터페이스는 랜덤액세스 패턴으로 충분한 고속 읽기 조작을 제공할 필요가 있습니다.
- 파일 시스템이 사용되는 경우 적절한 매핑 기능을 노출해야 합니다.
- 시스템에 스토리지가 표시되는 주소를 인식하려면 프로그램이 연결되거나 위치 독립적이어야 합니다.
- 프로그램은 로드된 이미지 내의 데이터를 수정해서는 안 됩니다.
스토리지 요건은 보통 NOR 플래시 메모리 또는 EEPROM을 사용하여 충족되지만 대부분의 설정에서 일반 시스템 RAM보다 다소 느리지만 읽기 작업을 위한 개별 단어로 처리될 수 있습니다.
부트 로드 중 XIP
일반적으로 First Stage Boot Loader는 부팅 시 플래시 칩이 매핑된 주소에서 실행되도록 링크된 XIP 프로그램으로 시스템 RAM을 셋업하기 위한 최소한의 프로그램(개별 보드에 사용되는 컴포넌트에 따라 다르며 적절한 시퀀스를 삽입할 수 있을 정도로 일반화할 수 없습니다).프로세서 하드웨어)를 사용하여 2단계 부트로더 또는 OS 커널을 RAM에 로드합니다.
이 초기화 중에는 쓰기 가능한 메모리를 사용할 수 없기 때문에 모든 연산은 프로세서 레지스터 내에서 수행해야 합니다.따라서 1단계 부트 로더는 어셈블리 언어로 작성되는 경향이 있으며 다음 프로그램의 정상적인 실행 환경을 제공하기 위해 최소한의 작업만 수행합니다.일부 프로세서는 칩 자체에 [1]소량의 SRAM을 내장하거나 온보드 캐시 메모리를 [2]RAM으로 사용할 수 있도록 하여 이 1단계 부트로더를 고급 언어로 쓰기 쉽게 합니다.
커널 또는 부트로더에서는 일반적으로 내부적으로 주소 공간이 할당되기 때문에 XIP를 사용하기 위해서는 데이터가 b일 수 있다고 가정한 코드를 실행하기 전에 변경 불가능한 데이터와 변경 가능한 데이터를 다른 주소 범위에 배치하도록 링커에 지시하고 변경 가능한 데이터를 쓰기 가능한 메모리에 복사하는 메커니즘을 제공하는 것으로 충분합니다.정상적으로 액세스 됩니다.이 작업은 이전 단계의 일부로 수행하거나 프로그램 시작 시 작은 코드 세그먼트 내에서 수행할 수 있습니다.
가상 메모리를 제공하지 않는 시스템에서 실행되는 응용 프로그램처럼 주소 공간이 외부에서 할당될 경우 컴파일러는 데이터 영역의 개인 복사본에 포인터에 오프셋을 추가하여 모든 수정 가능한 데이터에 액세스해야 합니다.이 경우 외부 로더는 인스턴스별 메모리 영역을 설정합니다.
BIOS 및 UEFI는 XIP를 사용하여 메인 메모리를 초기화합니다.
파일 시스템으로서의 XIP
XIP는 종종 충족하기 어려운 파일 시스템에 대한 요구사항을 설정합니다.페이지 테이블이 없는 시스템에서는 파일 전체를 연속된 바이트 내에 저장해야 하며 조각화해서는 안 됩니다.한편 플래시 기반 파일 시스템은 대부분의 경우 데이터를 플래시 칩의 섹터로 분산하여 칩의 마모를 방지함으로써 수명을 연장합니다.
이러한 모든 복잡성과 속도의 트레이드오프에 의해 XIP는 일반적으로 1단계 부트로더 또는 RAM이 극히 부족한 경우에만 사용됩니다.특히, 2세대부터 4세대까지의 비디오 게임 콘솔은 ROM 카트리지의 주소와 데이터 버스를 [3]콘솔의 주소와 연결하기 때문에 (예를 들어) Atari 2600은 조이스틱 인터페이스 IC에 128바이트의 RAM만으로 동작합니다.
Linux용 비교적 새로운 파일 시스템인 AXFS(Advanced XIP File System)는 특히 사용자 공간 애플리케이션의 인플레이스 실행과 관련하여 XIP와 관련된 몇 가지 단점을 극복하는 것을 목표로 합니다.예를 들어 실행 가능한 바이너리 파일을 "XIP 영역"으로 분할할 수 있으므로 위에서 언급한 플래그멘테이션의 제한을 피할 수 있습니다.
「 」를 참조해 주세요.
레퍼런스
- ^ Samsung S3C2416X는 64kB 내장 SRAM을 시스템버스에서 사용할 수 있습니다.
- ^ Broadcom BCM2835는 SDRAM을 초기화하기 전에 레벨2 캐시를 부트로더 RAM으로 사용합니다.
- ^ 미국 특허 4485457A, 리처드 K.발라스카, 로버트 L.헌터, 그리고 스콧 S.Robinson, "RAM과 페이지 전환 가능 ROM을 포함한 메모리 시스템"은 CBS Inc.에 할당된 1984-11-27을 발행했습니다.
- ^ Uebayashi, Masao (2010-04-05). "eXecute-In-Place (XIP) Support for NetBSD" (PDF). BSDCan.
외부 링크
- Bird, Tim R. (2004). "Methods to Improve Bootup Time in Linux" (PDF). Ottawa Linux Symposium.
- Hulbert, Jared (2008). "Introducing the Advanced XIP File System" (PDF). Ottawa Linux Symposium.
- Wilshire, Phil (2002-08-28). "eXecute In Place (XIP) overview". uCdot. Archived from the original on 2007-10-20. Retrieved 2007-09-25.
- Wellhöfer, Sören (2009-09-17). "Application eXecute-In-Place (XIP) with Linux and AXFS". Retrieved 2009-09-17.
- "Configure Linux for XIP (Execution In Place) on PowerPC". DENX Software Engineering.
- "Kernel XIP". Embedded Linux Wiki.
- "Linux Application XIP". Embedded Linux Wiki.
- "Execute in Place file system driver - xip2fs". Linux for S/390.