뱅크 스위칭
Bank switching뱅크 스위칭은 프로세서 명령에 의해 직접 주소[1] 지정 가능한 메모리 용량을 초과하여 증가시키는 컴퓨터 설계에서 사용되는 기술입니다.예를 들어 디스켓에서 시스템을 부팅하기 위해 필요한 ROM은 더 이상 필요하지 않을 때 스위치를 끌 수 있습니다.비디오 게임 시스템에서 뱅크 스위칭은 기존 콘솔에서 플레이하기 위해 더 큰 게임을 개발할 수 있게 했다.
뱅크 스위칭은 미니 컴퓨터 [2]시스템에서 시작되었습니다.현대의 많은 마이크로컨트롤러와 마이크로프로세서는 뱅크 스위칭을 사용하여 소형 임베디드 시스템의 랜덤 액세스 메모리, 비휘발성 메모리, 입출력 장치 및 시스템 관리 레지스터를 관리합니다.이 기술은 8비트 마이크로컴퓨터 시스템에서 일반적이었습니다.뱅크 스위칭은, 주소 버스 폭의 제한에 대처하기 위해서도 사용할 수 있습니다.하드웨어의 제약에 의해 주소 라인의 추가가 간단하게 방해되고 있는 경우나, 생성되는 주소가 주소 버스 폭보다 좁은 경우, ISA에서의 제한에 대처하기 위해서도 사용할 수 있습니다.일부 제어 지향 마이크로프로세서는 뱅크 스위칭 기술을 사용하여 내부 I/O 및 제어 레지스터에 액세스합니다.이것에 의해, 모든 명령에서 사용할 필요가 있는 레지스터 주소 비트의 수가 제한됩니다.
페이징에 의한 메모리 관리와 달리 디스크 스토리지와 같은 대용량 스토리지 디바이스와 데이터를 교환하지 않는다.데이터는, 특별한 프리픽스 순서를 사용하지 않고, 현재 프로세서가 액세스 할 수 없는 메모리 영역(비디오 디스플레이, DMA 컨트롤러, 또는 컴퓨터의 다른 서브 시스템에 액세스 할 수 있는 경우도 있습니다)의 대기 스토리지에 보존됩니다.
기술.
뱅크 스위칭은 일부 레지스터를 사용하여 프로세서 명령의 주소 공간을 확장하는 방법으로 간주할 수 있습니다.예:
- 12비트 주소를 가진 프로세서에 대한 후속 시스템에는[3] 15비트 주소 버스가 있지만 주소 버스에서 상위 3비트를 직접 지정할 수 있는 방법은 없습니다.내부 뱅크 레지스터를 사용하여 이러한 비트를 제공할 수 있습니다.
- 15비트 주소를 가진 프로세서에 대한 후속[4] 시스템에는 18비트 주소 버스가 있지만 레거시 명령에는 15비트 주소 비트만 있습니다. 내부 뱅크 레지스터를 사용하여 이러한 비트를 제공할 수 있습니다.일부 새로운 명령에서는 뱅크를 명시적으로 지정할 수 있습니다.
- 16비트 외부 주소 버스가 있는 프로세서는 2 = 65536개의 메모리 위치만16 지정할 수 있습니다.시스템에 외장 래치를 추가하면, 각각 65536 주소를 가지는 2 세트의 메모리 디바이스 중 어느 것에 액세스 할 수 있는지를 제어할 수 있습니다.CPU는 래치 비트를 설정 또는 클리어함으로써 현재 사용 중인 세트를 변경할 수 있습니다.
래치는 프로세서에 의해 여러 가지 방법으로 설정 또는 클리어할 수 있습니다.특정 메모리 주소를 디코딩하여 래치를 제어하거나 별도로 디코딩된 I/O 주소를 가진 프로세서의 경우 출력 주소를 디코딩할 수 있습니다.여러 뱅크 스위칭 제어 비트를 레지스터에 수집하여 레지스터에 추가 비트를 추가할 때마다 사용 가능한 메모리 공간을 약 두 배로 늘릴 수 있습니다.
외부 뱅크 선택 래치(또는 레지스터)는 프로세서의 프로그램카운터에 직접 접속되어 있지 않기 때문에 프로그램카운터가 오버플로해도 자동으로 상태가 변화하지 않습니다.프로그램 카운터는 프로세서의 내부 레지스터이기 때문에 외부 래치로 검출할 수 없습니다.증설 메모리는 프로그램에서 심리스하게 사용할 수 없습니다.프로세서의 내부 레지스터는 원래 길이로 유지되기 때문에 프로세서는 예를 들어 [5]내부 레지스터를 증가시킴으로써 뱅크 교환된 모든 메모리를 직접 스패닝할 수 없다.대신 프로세서는 뱅크 스위칭 조작을 명시적으로 실행하여 대용량 메모리 개체에 액세스해야 합니다.다른 제한이 있습니다.일반적으로[citation needed] 뱅크 스위칭시스템에는 모든 뱅크에 공통되는 프로그램메모리가 1개 있어요어느 뱅크가 현재 활성화되어 있는지에 관계없이 주소 공간의 일부에 대해서는 1세트만 사용됩니다.이 영역은 은행 간의 이행을 관리하는 코드를 유지하는 데 사용되며 인터럽트 처리에도 사용됩니다.
단일 데이터베이스가 여러 은행에 걸쳐 있는 경우가 많기 때문에 은행 간에 레코드를 이동해야 합니다(정렬 등).한 번에 1개의 뱅크에만 액세스 할 수 있는 경우는, 각 바이트를 2회 이동시킬 필요가 있습니다.처음에는 공통 메모리 영역으로 이동하고, 다음으로 행선지 뱅크에 뱅크스위치를 실행하고, 다음으로 실제로 바이트를 행선지 뱅크에 이동시킵니다.컴퓨터 아키텍처에 DMA 엔진 또는 세컨드 CPU가 탑재되어 있으며 뱅크 액세스 제한이 다를 경우 뱅크 간에 데이터를 직접 전송할 수 있는 서브시스템을 사용해야 합니다.
가상 메모리 스킴과는 달리 뱅크 스위칭은 실행 중인 프로그램 또는 운영 체제에서 명시적으로 관리해야 합니다.프로세서 하드웨어는 현재 액티브뱅크에 매핑되지 않은 데이터가 필요한 것을 자동으로 검출할 수 없습니다.응용 프로그램은 필요한 데이터를 보유하고 있는 메모리 뱅크를 추적한 다음 뱅크 전환 루틴을 호출하여 뱅크를 [6]활성화해야 합니다.그러나 뱅크 스위칭은 예를 들어 Disk 스토리지에서 데이터를 검색하는 것보다 훨씬 더 빠르게 데이터에 액세스할 수 있습니다.
마이크로컴퓨터 사용
초기 비디오 게임 콘솔 및 가정용 컴퓨터에서 일반적으로 사용되는 16비트 주소 지정 프로세서(8080, Z80, 6502, 6809 등)는 64KB만 직접 주소 지정할 수 있습니다.메모리가 더 많은 시스템에서는 주소 공간을 더 큰 주소 공간의 일부에 동적으로 매핑할 수 있는 여러 블록으로 분할해야 했습니다.뱅크 스위칭은 메모리를 각각 [8]최대 64KB의 개별 뱅크로 구성함으로써 이 큰 주소 공간을 실현하기 위해 사용되었습니다.다양한 크기의 블록이 뱅크 셀렉트 레지스터 또는 유사한 메커니즘을 통해 전환되었습니다.Cromemco는 64KB의 [9]8개 뱅크를 지원하는 최초의 마이크로컴퓨터 제조업체였습니다.
뱅크 스위칭을 사용할 때는 서브루틴 콜, 인터럽트, 머신스택 등의 처리가 손상되지 않도록 주의가 필요합니다.CPU에서 일시적으로 전환된 메모리의 내용은 프로세서에서 액세스할 수 없었지만 비디오 디스플레이, DMA, I/O 디바이스 등 다른 하드웨어에서 사용할 수 있습니다.CP/M-80 3.0 및 Z80 기반의 TRS-80s는 64KB 이상의 메모리를 지원합니다.또는 Z80 프로세서가 [10]해결할 수 있습니다.
뱅크 스위칭에 의해, 메모리나 기능을 컴퓨터 설계에 추가할 수 있게 되어, 보다 넓은 주소 버스를 가지는 프로세서로 전환하는 비용이나 호환성이 없어졌습니다.예를 들어, C64에서는 뱅크 스위칭을 사용하여 64KB의 RAM을 모두 사용할 수 있으며 ROM 및 메모리 매핑 I/O도 사용할 수 있습니다.Atari 130XE에서는, 2개의 프로세서(6502 와 ATC)가 다른 RAM 뱅크에 액세스 할 수 있기 때문에, 프로그래머는 CPU에 표시되는 메모리를 다 사용하지 않고, 큰 플레이필드나 다른 그래픽 오브젝트를 작성할 수 있습니다.
마이크로컨트롤러
마이크로컨트롤러(중대한 입출력 하드웨어를 온칩에 내장한 마이크로프로세서)는 뱅크스위칭을 사용하여 복수의 컨피규레이션레지스터 또는 온칩 읽기/쓰기 메모리에 액세스 할 수 있습니다.예를 들어 PIC 마이크로 컨트롤러가 있습니다.이를 통해 짧은 명령어는 시작 시 시스템 구성에 사용되는 레지스터와 같이 상대적으로 자주 사용되지 않는 레지스터에 액세스하는 데 필요한 추가 명령을 희생하여 일상적인 프로그램 실행 중에 공간을 절약할 수 있습니다.
IBM PC
1985년에 그 회사 로터스나 인텔. 마이크로 소프트 버전 3.21986년과 4.0은 1987년에 가입 확대 메모리 규격 IBMPC호환 기종 컴퓨터 MS-DOS실행에 사용하기 위해와 명세를 졌다 MS-DOS에서 640kB이상 EMS또는 림 EMS.[6][11][12]은행 전환 기술은 더 많은 th 할 수 있는 형태로 알려진 3.0(EMS)을 소개했다.은 640메모리 상한 영역에 [13]있는 64KB의 "창"에 분할 표시하여 원래 IBM PC 아키텍처에 의해 정의된 RAM의 KB.64KB는 4개의 16KB "페이지"로 나뉘며 각각 독립적으로 전환할 수 있습니다.일부 컴퓨터 게임에서는 이 기능을 사용하고 있으며, EMS는 구식이지만, 현재는 이러한 프로그램과의 하위 호환성을 제공하기 위해 최신 Microsoft Windows 운영 체제에서 이 기능을 에뮬레이트하고 있습니다.
최신의 eXtended Memory Specification(XMS; 확장 메모리 사양)은, 원칙적으로 1 MB이상의 메모리(「확장 메모리」라고 불린다)의 뱅크 스위칭을 시뮬레이트 하기 위한 규격으로, MS-DOS 가 동작하는 x86 프로세서의 리얼 모드에서는, 직접 어드레싱 할 수 없습니다.XMS는 확장 메모리를 기존 메모리의 어디에나 복사할 수 있기 때문에 "뱅크"의 경계는 고정되어 있지 않지만, 그것을 사용하는 프로그램의 관점에서는 EMS의 뱅크 스위칭과 같이 동작합니다.최신 버전의 MS-DOS (버전 5.0부터)에는, EMM386 드라이버가 포함되어 있어 XMS 를 사용해 EMS 메모리를 시뮬레이트 해, EMS 용으로 쓰여져 있어도, 프로그램이 확장 메모리를 사용할 수 있습니다.Microsoft Windows 는 XMS 를 필요로 하는 프로그램에 대해서도, XMS 를 에뮬레이트 합니다.
비디오 게임 콘솔
뱅크 스위칭은 일부 비디오 게임 콘솔에서도 [14]사용되었습니다.예를 들어, Atari 2600은 4KB의 ROM만을 처리할 수 있었기 때문에, 이후 2600개의 게임 카트리지에는 더 많은 ROM을 사용할 수 있도록 자체 뱅크 스위칭 하드웨어가 포함되어 있어 보다 정교한 게임(더 많은 프로그램 코드와 그래픽, 다양한 게임 [15]스테이지 등 더 많은 양의 게임 데이터를 통해)을 사용할 수 있게 되었습니다.닌텐도 엔터테인먼트 시스템은 수정된 6502를 포함하고 있었지만 카트리지에는 Multi-Memory Controller라고 불리는 뱅크 스위칭을 통해 주소 지정된 메가비트 이상의 ROM이 포함되어 있기도 했다.게임보이 카트리지는 메모리뱅크 컨트롤러(MBC)라는 칩을 사용해 ROM 뱅크 스위칭은 물론 카트리지 SRAM 뱅크 스위칭, 적외선 링크나 럼블 모터 등 주변기기에 대한 접근까지 가능했다.뱅크 스위칭은 여전히 이후의 게임 시스템에서 사용되고 있었다.Super Street Fighter II와 같은 여러 Sega Mega Drive 카트리지의 크기는 4MB가 넘었고 이 기술을 사용해야 했습니다(4MB가 최대 주소 크기).Gamepark Holdings의 GP2X 핸드헬드는 뱅크 스위칭을 사용하여 두 번째 프로세서의 시작 주소(또는 메모리 오프셋)를 제어합니다.
비디오 처리
일부 유형의 컴퓨터 비디오 디스플레이에서는 비디오 성능을 향상시키기 위해 이중 버퍼링 관련 기술을 사용할 수 있습니다.이 경우 프로세서가 1 세트의 물리 메모리 로케이션의 내용을 갱신하고 있는 동안, 비디오 생성 하드웨어는 2 세트의 내용에 액세스 해 표시합니다.업데이트가 완료되면 프로세서가 비디오 디스플레이 하드웨어에 신호를 보내 활성 뱅크를 교환할 수 있으므로 화면에 표시되는 전환에 왜곡이나 왜곡이 없습니다.이 경우 프로세서는 모든 메모리에 동시에 액세스할 수 있지만 비디오 디스플레이 하드웨어는 비디오 메모리의 일부 간에 뱅크 스위칭됩니다.비디오 메모리의 2개(또는 그 이상) 뱅크에 약간 다른 이미지가 포함되어 있는 경우는, 그 사이에 고속의 사이클(페이지 넘김)을 실시하면, 애니메이션이나 그 외의 시각 효과를 얻을 수 있어 프로세서가 직접 실행할 수 없습니다.
대체 및 후속 기술
뱅크 스위칭은 이후 많은 16비트 시스템에서 세그먼트화로 대체되었고, 이는 페이징 메모리 관리 유닛으로 대체되었습니다.그러나 임베디드 시스템에서 뱅크 스위칭은 단순하고 저비용이며 범용 컴퓨팅보다 이러한 상황에 더 잘 적응하기 위해 여전히 자주 사용됩니다.
「 」를 참조해 주세요.
- BBC Micro의 뱅크 전환 예인 측면 주소 공간
- 오버레이(프로그래밍)
레퍼런스
- ^ Aspinall, D., ed. (1978). The Microprocessor and its application: an advanced course. CUP Archive. pp. 47–50. ISBN 0-521-22241-9.
- ^ Bell, C. Gordon; Newell, Allen (1971). Computer structures: readings and examples. McGraw Hill. pp. 156.
- ^ "Storage Control". Control Data 160-A Computer Programming Manual (PDF). CDC. March 1963. p. 2-09. 145e.
- ^ Control Data 3600 Computer System Reference Manual (PDF). CDC. 60021300E.
- ^ Heath, Steve (2003). Embedded systems design. Newnes. pp. 242. ISBN 0-7506-5546-1.
- ^ a b Mueller, Scott (1992). Upgrading and Repairing PCs (2 ed.). Que Books. pp. 699–700. ISBN 0-88022-856-3. Retrieved 2020-02-08.
{{cite book}}: CS1 maint :url-status (링크) - ^ Garland, Harry (March 1977). "Design Innovations in Personal Computers". Computer. IEEE Computer Society. 10 (3): 25. doi:10.1109/c-m.1977.217669. S2CID 32243439. Retrieved 2020-02-08.
An eight-position DIP switch on such cards is used to select one (or more) of eight banks of memory.
{{cite journal}}: CS1 maint :url-status (링크) - ^ Garland, Harry (1979). Introduction to Microprocessor System Design. McGraw-Hill Book Company. p. 93. ISBN 0-07-022871-X. Retrieved 2020-02-08.
With memory bank select, memory space is arranged in a number of separate banks of up to 64K each.
{{cite book}}: CS1 maint :url-status (링크) - ^ Hogan, Thom (1981-06-08). "Share and Share Alike: Multiuser Hardware Explained". InfoWorld. Vol. 3, no. 11. p. 18. Retrieved 2020-02-08.
Cromemco was the first microcomputer manufacturer to refine and exploit bank switching.
{{cite news}}: CS1 maint :url-status (링크) - ^ Freiberger, Paul (1982-10-25). "Digital Research offers CP/M upgrade". InfoWorld. p. 1.
- ^ "New 1-2-3 Gets 4 Megabytes of Memory, Lotus, Intel Break PC DOS Memory Barrier". InfoWorld. 1985-04-29.
- ^ "EMS Update Gives DOS Improved Multitasking". InfoWorld. 1987-08-17.
- ^ Ross, Paul W., ed. (1995). The Handbook of Software for Engineers and Scientists. CRC Press. p. 26. ISBN 0-8493-2530-7.
- ^ Sinofsky, Brian (2002). Carey, Charles W. (ed.). American inventors, entrepreneurs & business visionaries. Infobase Publishing. pp. 322–324. ISBN 0-8160-4559-3. Retrieved 2020-02-08.
{{cite book}}: CS1 maint :url-status (링크) - ^ Grand, Joe; Russell, Ryan; Mitnick, Kevin D. (2004). Hardware hacking: have fun while voiding your warranty. Syngress. pp. 229. ISBN 1-932266-83-6. Retrieved 2020-02-08.
{{cite book}}: CS1 maint :url-status (링크)
외부 링크
- "Story about bank switching in the Apple II". Archived from the original on 2014-03-26.
- "What Is Bank Switching?".