KR0164769B1 - 시스템 프로그램 실행 방법 - Google Patents

시스템 프로그램 실행 방법 Download PDF

Info

Publication number
KR0164769B1
KR0164769B1 KR1019910008562A KR910008562A KR0164769B1 KR 0164769 B1 KR0164769 B1 KR 0164769B1 KR 1019910008562 A KR1019910008562 A KR 1019910008562A KR 910008562 A KR910008562 A KR 910008562A KR 0164769 B1 KR0164769 B1 KR 0164769B1
Authority
KR
South Korea
Prior art keywords
bank
subroutine
program
banks
ram
Prior art date
Application number
KR1019910008562A
Other languages
English (en)
Other versions
KR920022091A (ko
Inventor
김재호
Original Assignee
정용문
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 정용문, 삼성전자주식회사 filed Critical 정용문
Priority to KR1019910008562A priority Critical patent/KR0164769B1/ko
Publication of KR920022091A publication Critical patent/KR920022091A/ko
Application granted granted Critical
Publication of KR0164769B1 publication Critical patent/KR0164769B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs

Abstract

시스템 프로그램을 실행하는 방법에 관한 것이다.
하나의 메모리 칩을 여러개의 뱅크로 나누어 쓰고 시스템 프로그램이 각 뱅크에 모두 실려 있어 뱅크간에 서브루틴을 호출하는 경우 시스템 전원 공급시 뱅크 전환 프로그램을 램에 옮기고 이 전환 루틴을 이용해 뱅크간의 시스템 서브루틴을 호출 함으로써 뱅크간에 서브루틴 호출이 부가적인 하드웨어 없이 원활히 이루어지게 한다.

Description

시스템 프로그램 실행 방법
제1도는 종래의 시스템 블럭도.
제2도는 시스템 프로그램 저장 예시도.
제3도는 본 발명의 시스템 블럭도.
제4도는 본 발명에 다른 메모리 맵의 예시도.
제5도는 각 뱅크에 저장된 프로그램 예시도.
제6도는 램 뱅크에 저장될 다른 뱅크 프로그램 호출 서브루틴 예시도.
* 도면의 주요부분에 대한 부호의 설명
CAB : 변환된 어드레스버스 BSS1 : 롬뱅크 선택신호
BSS2 : 램뱅크 선택신호 ADD : 어드레스
WS : 기록신호 RS : 독출신호
DB : 데이타버스 BSS : 뱅크 선택신호
ADRWS : 어드레스, 데이타, 독출, 기록신호
본 발명은 시스템 프로그램의 실행 방법에 관한 것으로, 특히 다수의 마이크로 프로세서 명령으로 하드웨어의 부가 없이도 시스템의 메모리 뱅크(bank)간의 서브루틴 호출을 원활히 할 수 있는 시스템 프로그램 실행 방법에 관한 것이다.
일반적으로 시스템에 뱅크는 여러개 둘 수 있으나 시스템 프로그램은 하나의 뱅크안에 모두 들어있다. 그러므로 제1도에 도시한 바와 같이 다수의 뱅크가 있어도 시스템 프로그램은 그중 임의의 하나의 뱅크만 갖고 있어 뱅크간의 시스템 프로그램이 호출이 불가능한 문제점을 갖고 있었다.
예를들어 제2도에 도시한 바와 같이 시스템 프로그램을 롬의 1000H에 저장하게 될 경우 1000H의 호출 명령어가 실행되면 서브루틴에서 돌아왔을때 실행해야 할 명령어가 들어있는 메모리의 어드레스 1003H를 시스템에 저장한다. 다음으로 프로그램 카운터(program counter) 또는 명령 포인터(instruction pointer)에 서브루틴 1의 어드레스를 실어 상기 서브루틴1을 실행한다. 상기 서브루틴1에서 리턴하면 스택에 세이브된 이동 명령어(move)가 놓인 어드레스 1003H를 상기 프로그램 카운터 또는 명령포인터에 실어 다음 명령어를 수행한다.
이와 같이 종래의 호출 명령어에는 뱅크를 지정하는 명령이 들어있지 않았다. 그러므로 시스템 프로그램을 제1도의 뱅크0,뱅크1, 뱅크2‥‥등에 나누어 넣더라도 상기한 방법으로는 뱅크간에 서브루틴 호출이 불가능 할 수 밖에 없었다.
따라서 본 발명의 목적은 다수의 마이크로 프로세서 명령으로 하드웨어의 부가 없이도 시스템의 메모리 뱅크간의 서브루틴 호출을 원활히 할 수 있는 시스템 프로그램 실행 방법을 제공함에 있다.
이하 본 발명을 첨부한 도면을 참조하며 상세히 설명한다.
제3도는 본 발명의 시스템 블럭도로써,
시스템의 전반적인 동작을 총괄적으로 제어하는 CPU(100)와,
롬 및 램 뱅크 선택신호와 각종 어드레스와 기록 및 독출신호와 데이터등을 출력하여 시스템의 전반적인 동작을 총괄적으로 제어하는 여러개의 부분(뱅크)으로 등분되어 독립적으로 억세스할 수 있는 롬(400)및 램(500)과,
상기 CPU(100)로부터 출력되는 롬 뱅크 선택 신호와 어드레스 신호를 입력하여 실제로 상기 롬(400)에 맞는 어드레스를 발생하는 롬어드레스 발생부(500)와,
상기 CPU(100)로부터 출력되는 램 뱅크 선택신호와 어드레스 신호를 입력하며 실제로 상기 램(500)에 맞는 어드레스를 발생하는 램 어드레스 발생부(300)으로 구성된다.
제4도는 본 발명에 따른 메모리 맵의 예시도로써,
(4a)는 롬 및 램의 물리적(physical)인 어드레스 할당도이고,
(4b)는 롬 및 램 논리적(logical)인 어드레스 할당도이다.
제5도는 각 뱅크에 저장된 프로그램 예시도로써,
(5a)는 뱅크 0의 프로그램이고,
(5b)는 뱅크 1의 프로그램이다.
제6도는 램에 저장될 다른 뱅크의 프로그램을 호출하기 위한 서브루틴 예시도이다.
상술한 구상에 의거 본 발명을 상세히 설명한다.
롬(400)과 램(500)의 어드레스 공간은 CPU(100)보다 넓다. 그리고 하나의 롬(400) 혹은 램(500)은 여러개의 뱅크로 나누어 쓴다. 뱅크 선택신호는 상기 CPU(100)의 입출력 핀(pin)중의 일부를 선택하여 쓴다.
이 뱅크 선택신호외 상기 CPU(100)가 만드는 어드레스 신호를 변환시켜 실제 상기 롬(400) 및 램(500)에 맞는 어드레스를 만든다. 실제 상기 롬(400)이 갖는 어드레스와 상기 CPU(100)가 보는 논리적인 어드레스는 제4도에 나타낸 바와 같다.
상기 CPU(300)의 어드레스 공간은 0000H∼FFFFH (64킬로바이트)이다.
이중 8000H∼FFFFH 영역을 상기 롬(400)이 사용하고 상기 램(500)에서 0000H~7FFFH 영역을 사용한다. 물론 각각은 32킬로바이트이다. 여기서 상기 롬(400)과 램(500)의 어드레스 영역은 바꾸어 사용할 수도 있다.
한편시스템에서 필요한 메모리는 상기 롬(400)과 램(500) 각각 128킬로바이트이므로 32킬로바이트인 롬 뱅크를 4개, 32킬로바이트인 램뱅크를 4개로 하여 상기 메모리를 구성하되 상기 롬(400)과 램(500)은 실제로 각각 I개의 칩(chip)으로 구성되어 있다. 이것을 제4도의(4a)와 같이 4개의 영역으로 나누어 뱅크 0∼뱅크3으로 사용한다. 이때 상기 CPU(100)의 관점에서 본 롬 뱅크의 어드레스는 모두 8000H∼FFFFH의 같은 어드레스 공간을 갖는다.
램뱅크도 롬뱅크와 같이 0000H∼7FFFH의 같은 어드레스 공간을 갖는다.
시스템 프로그램은 128바이트의 뱅크 4개를 모두 사용한다.
그리고 프로그램 수행에 필요한 램(500)도 128킬로바이트 모두 필요하다.
이때 램뱅크는 사용에 별 무리가 없다.
반면 각 롬뱅크에 시스템 프로그램이 들어갈 경우를 살펴보면, 각 뱅크는 논리적으로 같은 어드레스 공간을 갖고 있다. 각 뱅크는 입출력 핀중의 일부를 사용하여 선택하므로 프로그램 시행중 사용자의 고려 없이 하드웨어가 자동으로 선택해주는 것이 아니다. 명령으로 입출력 포트를 세팅해 주어야 뱅크가 바뀐다. 이때 뱅크는 바뀌었지만 프로그램 카운터 또는 명령포인터는 뱅크가 바뀜에 따라 필요 적절하게 바꿔지는 않는다.
그러므로 상기 CPU(100)는 바뀌어진 뱅크의 엉뚱한 프로그램을 수행하게 될 수도 있다.
주프로그램은 뱅크0에 있고 서브루틴1은 뱅크1에 있는 프로그램을 예를 들어 설명하면, 서브루틴1이 뱅크1의 9000H 부터 시작할때 뱅크의 정보가 없으면 메인(main)에서 서브루틴1을 호출하면 뱅크0의 9000H 번지의 명령어를 수행하여 엉뚱한 프로그램을 실행할 수 있기 때문이다.
이와같은 뱅크간의 서브루틴의 호출 문제를 해결하기 위해서는 하기와 같은 방법의 사용이 불가피하다.
즉, 시스템에 전원을 공급 했을때 상기 CPU(100)는 제6도의 프로그램을 램뱅크의 특정번지에 저장해 놓는다.
여기서 bank#1, bank#2, address-high, address-low는 서브루틴을 호출하는 곳에서 써준다.
뱅크간에 서브루틴을 호출하기 위해서는 우선 뱅크0의 프로그램중 명령어 call subroutine 1을 하기와 같이 바꾼다.
move buff1, bank#1
move buffs, 서브루틴1의 어드레스
move buff3, bank#2
call change-bank
상기 bank#1은 서브루틴1이 들어있는 뱅크의 번호이고, bank#2는 서브루틴1을 호출한 프로그램이 들어있는 뱅크의 번호이다. 이 예에서 bank#1은 1이고 bank#2는 0이다. 위와같이 가야할 뱅크 번호와 되돌아온 뱅크번호 및 서브루틴1의 어드레스를 램뱅크의 서브루틴 change-bank가 들어 있는 곳에(buff1, buff2, buff3)에 써준다.
여기서 상기 change-bank 서브루틴의 프로그램은 하기와 같다.
change-bank; out bank#1
call subroutine 1
out bank#2
return
그리고 램뱅크의 change-bank를 호출한다.
상기 램뱅크에 있는 change-bank에서는 시스템 프로그램의 롬뱅크를 바꾼다. (out bank#1)
다음 서브루틴1을 호출한다. 뱅크가 바뀐 상황에서 서브루틴1이 실행되고 복귀(return)하면 램뱅크의 서브루틴으로 되돌아 오며 뱅크번호를 원래대로 한다. (out bank#2)
그리고 메인(main)으로 복귀한다.
롬뱅크와 램뱅크의 선택퇸 다른 입출력 핀으로 하므로 램뱅크를 고정시켜 상기와 같이 램의 뱅크 변화 루틴을 거쳐 뱅크를 바꾸어 줄 수 있다.
상기와 같이 램을 이용하면 bank#를 바꿈으로써 다른 뱅크의 엉뚱한 프로그램을 수행하는 경우가 없어지고, 가야할 뱅크번호와 서브루틴 어드레스 및 되돌아온 뱅크번호를 램에 들어있는 서브루틴에 써주므로 유연하고 가변성있게 뱅크간에 서브루틴을 호출할 수 있는 장점이 있다.

Claims (1)

  1. 시스템 프로그램 실행 방법에 있어서, 하나의 메모리 칩을 둘이상의 뱅크로 나누고, 시스템 프로그램을 상기 각 뱅크에 모두 실어 서브루틴을 호출시 시스템 전원이 공급되면 뱅크변환 프로그램을 램뱅크에 옮기고 상기전환 프로그램으로써 뱅크간의 시스템 서브루틴을 호출함을 특징으로 하는 방법.
KR1019910008562A 1991-05-25 1991-05-25 시스템 프로그램 실행 방법 KR0164769B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1019910008562A KR0164769B1 (ko) 1991-05-25 1991-05-25 시스템 프로그램 실행 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019910008562A KR0164769B1 (ko) 1991-05-25 1991-05-25 시스템 프로그램 실행 방법

Publications (2)

Publication Number Publication Date
KR920022091A KR920022091A (ko) 1992-12-19
KR0164769B1 true KR0164769B1 (ko) 1999-01-15

Family

ID=19314947

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019910008562A KR0164769B1 (ko) 1991-05-25 1991-05-25 시스템 프로그램 실행 방법

Country Status (1)

Country Link
KR (1) KR0164769B1 (ko)

Also Published As

Publication number Publication date
KR920022091A (ko) 1992-12-19

Similar Documents

Publication Publication Date Title
US3573855A (en) Computer memory protection
EP0106572B1 (en) Data processing system with virtual machines
KR940015852A (ko) 긴 명령 워드를 갖는 처리기
EP0338317B1 (en) Information processor operative both in direct mapping and in bank mapping and the method of switching the mapping schemes
US3940744A (en) Self contained program loading apparatus
US4047245A (en) Indirect memory addressing
US4918586A (en) Extended memory device with instruction read from first control store containing information for accessing second control store
KR0164769B1 (ko) 시스템 프로그램 실행 방법
JPH02217925A (ja) マイクロプロセッサ
US5491826A (en) Microprocessor having register bank and using a general purpose register as a stack pointer
US6665770B2 (en) Device and method for updating a pointer value by switching between pointer values
US6421825B2 (en) Register control apparatus and method thereof for allocating memory based on a count value
JPS6022250A (ja) コンピユ−タ装置
KR100199477B1 (ko) 절약된 메모리를 갖는 전자제어 시스템 및 메모리 절약 방법
JPS6065342A (ja) マイクロコンピユ−タ
KR920003845B1 (ko) 개인용 컴퓨터의 사용자를 위한 rom의 영역 확장 시스템
KR970004866B1 (ko) 가상메모리 개념을 이용한 복수 프로세서의 메모리영역 공유장치
US4486825A (en) Circuit arrangement for extended addressing of a microprocessor system
JPS6220034A (ja) プログラム状態語切換制御方式
JPS6161139B2 (ko)
JPS62151955A (ja) メモリアドレツシング方式
Chase et al. Virtual memories for mini-computers
JPS5899840A (ja) 制御記憶装置
JPH05258124A (ja) インタフェース回路
JPH01131938A (ja) メモリ拡張制御方式

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20060830

Year of fee payment: 9

LAPS Lapse due to unpaid annual fee