KR100442440B1 - 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치 - Google Patents

프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치 Download PDF

Info

Publication number
KR100442440B1
KR100442440B1 KR10-2001-0051966A KR20010051966A KR100442440B1 KR 100442440 B1 KR100442440 B1 KR 100442440B1 KR 20010051966 A KR20010051966 A KR 20010051966A KR 100442440 B1 KR100442440 B1 KR 100442440B1
Authority
KR
South Korea
Prior art keywords
memory
data
processing unit
central processing
input
Prior art date
Application number
KR10-2001-0051966A
Other languages
English (en)
Other versions
KR20030018309A (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 KR10-2001-0051966A priority Critical patent/KR100442440B1/ko
Publication of KR20030018309A publication Critical patent/KR20030018309A/ko
Application granted granted Critical
Publication of KR100442440B1 publication Critical patent/KR100442440B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Logic Circuits (AREA)

Abstract

본 발명은 프로그램 로직을 이용한 메모리 액세스 제어방법은, 프로그램 로직이 입출력 데이터의 메모리 버스 상태가 액세스 상태이면 중앙 처리부의 각 포트별 리드 또는 라이트 액세스 식별자를 확인하는 단계; 상기 확인 결과 중앙 처리부로부터 메모리 데이터의 리드동작인 경우 프로그램 로직이 메모리에 중앙 처리부의 버스를 맵핑시키는 단계; 상기 확인 결과 중앙 처리부로부터 메모리 라이트 동작인 경우 프로그램 로직이 입출력 포트에 중앙 처리부의 버스를 맵핑시키는 단계를 포함하는 것을 특징으로 한다.
이 같은 본 발명에 의하면, 중앙 처리부에서 관련된 다수의 입출력 포트 및 장치를 제어하고자 할 경우 각 입출력 포트에 메모리 영역을 별도로 할당하지 않고, 프로그램 로직을 이용한 하드웨어 레지스터로서 선입선출 데이터 구조를 구현할 수 있도록 함으로써, 중앙 처리부 메모리 영역과는 별개의 메모리 영역을 중앙 처리부가 관리할 수 있고, 중앙 처리부가 제어할 수 있는 메모리 용량과는 관계없이 대용량 메모리 사용 가능 및 다수의 입출력 포트 제어 가능 및 유연한 확장성이 용이해 진다.

Description

프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치{Control method and apparatus for memory access using programmable logic}
본 발명은 중앙 처리부와 관련된 하드웨어를 설계함에 있어서, 특히 다수개의 입출력 포트를 제어하고자 할 경우 프로그램 로직(FPGA: Field Programmable Gate Array)을 이용하여 각 입출력 포트별 선입 선출 메모리 구조를 구현하여, 중앙 처리부가 직접 프로그램 로직을 하드웨어 레지스터로서 관리할 수 있도록 한 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치에 관한 것이다.
종래에는 시스템을 구성하는 관련 구성요소 설계시, 중앙 처리부(CPU: Central Processing Unit)에서 데이터 버스(Data Bus)와 어드레스 버스(Address Bus), 제어 버스(Control Bus)를 통해 관련 하드웨어(Hardware)를 제어할 수 있도록 어드레스 버스 및 데이터 크기가 우선적으로 고려되어 설계된다.
그리고, 중앙 처리부에서 제어할 수 있는 메모리의 영역은 램(RAM), 롬(ROM), 그리고 여러 입출력 장치(I/O Device)에 각각 맵핑(mapping)되며, 중앙 처리부가 다수개의 입출력 장치들에 대해 데이터를 리드 및 라이트 할 경우, 지정된 해당 어드레스로 점프(jump)하여 순차적으로 어드레스를 증가시키면서 데이터를 리드 또는 라이트하게 된다.
여기서, 중앙 처리부와 관련되는 하드웨어 설계시 지정된 어드레스 버스 및 데이터 버스의 크기에 따라 중앙 처리부가 관리할 수 있는 메모리 크기는 한정적이다. 이는 8비트 같은 낮은 성능의 중앙 처리부의 경우 관리할 수 있는 메모리 크기도 작기 때문에 여러 입출력 포트나 장치를 제어함에 있어 어려움이 많다.
그 예로서, 8비트 중앙 처리부(Z80)의 경우 어드레스 버스는 16비트(16bits), 데이터 버스는 8비트(8bits)가 할당되므로, 전체 메모리 공간은 64Kbyte(216×8bit)이다. 이러한 방식으로 다른 중앙 처리부에서 제어할 수 있는 전체 메모리 공간이 한정적으로 할당됨으로써, 중앙 프로세서의 외부 메모리의 크기가 결정된다.
이와 같은 중앙 처리부에서 제어할 수 있는 메모리 용량의 제한으로 다수의 입출력 포트와 인터페이스할 수 있는 데이터 처리의 한계가 존재하고, 이에 따라 중앙 처리부가 하드웨어 레지스터를 직접 관리하는 데 어려움이 있다. 이에 따라 메모리 관리 및 입출력 포트의 확장과 메모리 용량 확장이 어렵다는 데 그 문제가 있다.
본 발명은 상기한 종래의 문제점을 해결하기 위해 안출된 것으로서, 프로그램 로직이 중앙 처리부로부터 데이터 액세스 동작시 상기 중앙 처리부와 메모리 사이에서 액세스 동작을 중재할 수 있도록 한 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치를 제공함에 그 목적이 있다.
다른 목적은, 프로그램 로직 내부에 각 포트를 선택하기 위한 별도의 레지스터 플래그 및 데이터를 리드, 라이트하기 위한 식별자를 제공해 주고 각 포트별 데이터 액세스에 해당하는 데이터 입력 포인터와 출력 포인터를 관리할 수 있도록 한 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치를 제공함에 그 목적이 있다.
또 다른 목적은, 프로그램 내부의 클럭을 중앙 처리부의 클럭 보다 수배의 빠른 클럭을 제공하여, 선입 선출 방식의 메모리로부터 중앙 처리부에서 처리하는 포트의 데이터를 미리 내부 램에 저장시켜 줄 수 있도록 한 프로그램 로직을 이용한 메모리 액세스 제어방법 및 제어장치를 제공함에 그 목적이 있다.
도 1은 본 발명 실시 예에 따른 프로그램 로직을 이용한 메모리 액세스 제어장치를 나타낸 구성도.
도 2의 (a)는 본 발명 실시 예에 따른 입출력 포트별 선택 레지스터를 나타낸 도면이고, (b)는 선입선출 포인터 관리를 나타내는 도면.
도 3은 본 발명 실시 예에 따른 프로그램 로직의 라이트 상태 머신에 의한 입출력 포트의 데이터 라이트 상태를 나타낸 플로우 챠트.
도 4는 본 발명 실시 예에 따른 중앙 처리부가 입출력포트 메모리를 액세스할 경우 상태 머신에 의한 입출력 포트의 데이터 리드/라이트 상태를 나타낸 플로우 챠트.
도 5는 본 발명 실시 예에 따른 프로그램 로직의 중재 머신에 의한 메모리 중재 상태를 나타낸 플로우 챠트.
<도면의 주요 부분에 대한 부호의 설명>
101...중앙 처리부(CPU) 102...메모리(RAM)
103...프로그램 로직(FPGA) 111~113...입출력 포트
상기한 목적 달성을 위한, 본 발명에 따른 프로그램 로직을 이용한 다수 입출력 장치별 메모리 제어방법은,
프로그램 로직을 이용한 메모리 액세스 제어에 있어서,상기 프로그램 로직이 입출력 데이터의 메모리 버스 상태가 액세스 상태이면 중앙 처리부의 리드 또는 라이트 액세스 식별자를 확인하는 단계;
상기 확인 결과 중앙 처리부로부터 메모리 데이터의 리드동작인 경우 프로그램 로직이 메모리에 중앙 처리부의 버스를 맵핑시키는 단계;
상기 확인 결과 중앙 처리부로부터 메모리 라이트 동작인 경우 프로그램 로직이 입출력 포트에 중앙 처리부의 버스를 맵핑시키는 단계를 포함하는 것을 특징으로 한다.
상세하게, 상기 메모리로의 데이터 리드 동작시에는 상기 프로그램 로직 내의 하드웨어를 초기화한 후 입출력 포트 선택 레지스터를 체크하는 단계; 특정 포트의 레지스터이면 해당 포트의 메모리 액세스 레지스터와 어드레스가 일치하는 가를 확인하는 단계; 해당 포트의 액세스 레지스터와 어드레스가 일치할 경우 메모리로의 데이터를 리드하고, 해당 포트의 출력 포인터를 증가시키는 단계; 상기 출력 포인터를 증가시키면서 데이터를 리드하고, 리드 종료 메시지가 검출되면 해당 포트의 어드레스 포인터를 리셋시키는 단계; 및 상기 입출력 포트 선택 레지스터의 해당 포트를 하이로 세팅하여 중앙 처리부에게 처리해야 할 포트를 알려주는 단계를 포함하는 것을 특징으로 한다.
상세하게, 상기 메모리로의 데이터 라이트 동작시에는 상기 프로그램 로직 내의 하드웨어를 초기화한 후 각 포트별로 주기적으로 스캐닝하여 특정 포트의 데이터를 감지하는 단계; 특정 포트의 데이터가 감지되면 메모리에 데이터를 입력 포인터를 증가시키면서 라이트하고 라이트 종료 메시지를 검출하는 단계; 상기 라이트 종료 메시지를 검출하면 해당 포인터의 어드레스 입력 포인터를 리셋시키는 단계를 포함하는 것을 특징으로 한다.
본 발명 실시 예에 따른 프로그램 로직을 이용한 메모리 액세스 제어장치는, 다수의 입출력 장치의 액세스를 제어하기 위한 어드레스 및 데이터, 제어 버스 신호를 출력하는 중앙 처리부와, 어드레스 및 데이터, 제어신호에 의해 데이터를 선입 선출 방식으로 리드 및 라이트하는 메모리와, 상기 중앙 처리부에 의한 각 입출력 포트의 선택 레지스터 및 액세스 식별자를 확인하여 상기 메모리에 선입 선출 방식으로 데이터의 리드 및 라이트를 중재하는 프로그램 로직수단을 포함하는 것을 특징으로 한다.
바람직하게, 상기 프로그램 로직수단은 상기 선택 레지스터에 해당하는 입출력 포트의 액세스 식별자에 의해 메모리로의 데이터 리드 및 라이트 동작시 입력 및 출력 포인터를 각각 증가시켜 데이터를 액세스하는 것을 특징으로 한다.
바람직하게, 상기 프로그램 로직수단은 중앙 처리부의 동작 클럭 보다 수배의 빠른 상태 머신 클럭으로 메모리로의 데이터를 액세스하는 것을 특징으로 한다.
이하 첨부된 도면을 참조하여 설명하면 다음과 같다.
도 1은 본 발명 실시 예에 따른 프로그램 로직을 이용한 메모리 액세스 제어장치를 나타낸 구성도이고, 도 2의 (a)는 본 발명 실시 예에 따른 입출력 포트별 선택 레지스터를 나타낸 도면이고, (b)는 선입선출 포인터 관리를 나타내는 도면이며, 도 3은 본 발명 실시 예에 따른 프로그램 로직의 라이트 상태 머신에 의한 입출력 포트의 데이터 라이트 상태 흐름도이고, 도 4는 본 발명 실시 예에 따른 프로그램 로직의 리드 상태 머신에 의한 입출력 포트의 데이터 리드 상태를 나타낸 플로우 챠트이며, 도 5는 본 발명 실시 예에 따른 프로그램 로직의 중재 상태 머신에 의한 메모리 중재 방법을 나타낸 플로우 챠트이다.
도 1을 참조하면, 데이터 및 어드레스 버스, 제어버스로 다수의 입출력 장치를 제어하는 중앙 처리부(101)와, 다수 입출력 포트의 데이터를 저장하는 선입선출 구조의 메모리(RAM)(102)와, 상기 중앙 처리부(101)에서 메모리로의 리드 및 라이트시 중재 역할을 하는 프로그램 로직(FPGA)(103)으로 구성된다.
여기서, 상기 프로그램 로직(103)은 내부에 각 포트를 선택하기 위한 레지스터 플래그(Register bit) 및 데이터의 리드, 라이트를 식별하기 위한 플래그 비트를 포함하는 것을 특징으로 한다.
상기와 같이 구성되는 본 발명에 따른 프로그램 로직을 이용한 메모리의 액세스 제어방법 및 장치에 대하여 첨부된 도면을 참조하여 설명하면 다음과 같다.
먼저, 중앙 처리부(101)는 프로그램 로직(103)에 데이터 버스 및 어드레스 버스, 제어버스로 액세스하고, 프로그램 로직(103)은 상기 중앙 처리부(101)의 액세스에 따라 상기 버스를 메모리(102)에 맵핑시키고, 입출력 장치(111~113)로부터의 데이터를 리드 및 라이트하는 경우 입출력 포트(I/O Port) 버스를 메모리(102)에 맵핑시켜 준다.
여기서, 메모리(102)는 선입 선출(FIFO: First In First Out) 메모리 구조를 갖고 각 포트별 메모리 영역이 할당된다.
그리고, 프로그램 로직(103)은 중앙 처리부(101)에서 메모리(102)로의 데이터 리드 및 라이트를 위한 중재 기능을 수행한다.
이를 위해서, 프로그램 로직(103) 내부에는 중앙 처리부(101)의 액세스 동작에 따라 선입선출 구조의 메모리(102)에 데이터를 라이트하는 라이트 상태 머신(state mechine)과, 데이터를 리드하는 리드 상태 머신이 각각 존재하고, 이들의 충돌을 방지하고 중재하는 중재 상태 머신이 별도로 존재하게 된다.
또한, 프로그램 로직(103) 내부의 레지스터(register)에는 어드레스 입력 포인터(inpointer) 및 어드레스 출력 포인터(outpointer)를 입출력 포트 개수별로 할당하고, 각각의 포인터 값은 상기 레지스터에 저장되어 있다.
그리고, 프로그램 로직(103)의 상태 머신 클럭은 중앙 처리부(101)의 클럭 보다 수 배 빠른 클럭을 제공하고, 내부의 램(RAM)에는 중앙 처리부(101)가 처리할 포트의 데이터 및 입출력 장치(111~113)로부터 각 포트로 입력되는 데이터를 미리 저장하여 중앙 처리부(101)가 액세스할 어드레스를 내부 램에 맵핑시켜 준다. 여기서, 상기 프로그램 로직 내의 램이 여러 입출력 포트의 데이터를 저장할 수 있을 만큼 크다면 외부 메모리를 내장시킬 수도 있다.
그리고, 입출력 포트 및 입출력 장치(111~113)에 할당된 메모리(102)의 영역은 중앙 처리부(101)가 핸들링 할 수 있는 메모리 영역과는 구분된다. 즉, 중앙 처리부(101)는 각 입출력 포트에 액세스하기 위해서 프로그램 로직(103) 내에 한 개의 레지스터만 액세스하게 되고, 메모리(102)에는 입출력 포트 및 입출력 장치별 영역이 각각 할당되어 있다.
그리고, 도 2의 (a)는 프로그램 로직 내에 구현된 입출력 포트 선택 레지스터를 나타낸 것으로, 각 포트를 선택하기 위한 별도의 레지스터 플래그(D0~D3)와, 데이터를 리드(CPU read) 및 라이트(CPU write)하기 위한 별도의 플래그 비트(D4,D5)가 포함된다.
도 2의 (a)에서의 입출력 포트 선택 레지스터를 예로 하여 설명하면, 한 바이트(D0~D7) 내에서 비트 0(D0=Port bit 0)에서 비트 3(D3=Port bit 3)까지의 조합으로 선택되는 입출력 포트가 16(24)개 할당된 경우로서 선택된 입출력 포트는 비트 0~3의 16진수 값으로 표현된다. 입출력 포트 선택 레지스터는 2비트 할당되어 데이터를 리드(CPU read)할 것인지, 라이트(CPU write)할 것인지를 구분하는 플래그 비트이다.
도 2의 (b)는 프로그램 로직 내에 구현된 선입 선출 메모리의 포인트 관리를 나타내기 위한 도면으로서, 입력 포인터(inpointer)와 출력 포인터(outpointer)는초기치 0이고, 데이터를 메모리(102)에 라이트하면 입력 포인터를 증가시키고, 데이터를 메모리(102)에 리드하면 출력 포인터를 증가시켜 준다. 이때, 출력 포인터에 의해 출력된 데이터는 프로그램 로직 내부에 메모리 맵핑된 액세스 레지스터에 저장된다.
여기서, 입출력 포트의 비트 할당시 4비트를 할당하여 이들의 조합에 의해 선택하는 방식 또는 입출력 포트와 일대일 대응하는 입출력 포트별 레지스터(FIFO 시작번지)를 두어 고정 할당하는 방식을 이용할 수도 있다.
그리고, 프로그램 로직(103)의 선입선출 메모리 구현시 데이터 리드(Read) 어드레스와 데이터 라이트(Write) 어드레스를 별도로 구현하지 않고, 동일한 어드레스로 구현하게 된다. 이는 프로그램 로직 내에서 포트별 데이터 입력 포인터(Inpointer)와 출력 포인터(Outpointer)를 관리함으로써 가능해 진다. 그러면, 프로그램 로직(103)은 중앙 처리부(101)가 해당 포트의 데이터를 리드하기 위해 메시지 종료 데이터가 출력될 때 까지 계속 상기 레지스터를 액세스한다.
도 2의 (c)는 입출력 포트가 16개 일 경우의 예로서, 상기 레지스터(Reg1,Reg2)는 프로그램 로직 내부에 있는 메모리 mapped 레지스터로서, 입출력 포트로부터의 데이터 수신이 완료되면 해당 포트(Port1,...,Port16)의 비트가 1로 셋됨으로써, 중앙 처리부에게 데이터가 수신된 포트를 알려준다.
도 3은 프로그램 로직 내의 라이트 머신 동작 상태도로서, 중앙 처리부(101)에 의해 프로그램 로직 내의 하드웨어(register, memory, pointer 등)는 초기화(=0)되고(S301), 중앙 처리부(101)에 의해 입출력 장치(111~113)로부터 액세스하고자 하는 데이터가 임의의 포트로 입력되는지를 주기적으로 스캐닝하여(S302), 데이터가 검출되는지를 확인한다(S303). 상기 확인 결과 데이터가 검출되면 라이트 동작으로 인식(D5=1)하여 메모리(102)에 데이터를 라이트하고, 입력 포인터는 증가시킨다(S304).
여기서, 프로그램 로직 내에 구현된 상태 머신(예컨대, VHDL, 알고리즘)은 중앙 처리부 동작 클럭(clock) 보다 수 배 빠른 클럭속도를 가지고 있어, 중앙 처리부(101)가 선택한 입출력 포트의 특정 데이터 값을 리드/라이트해야 하는 경우 상기 입출력 포트들의 데이터를 미리 스캐닝하여 내부 램에 저장시키고, 중앙 처리부(101)가 액세스할 어드레스를 상기 램에 맵핑시켜 준다.
이러한 상태 머신 클럭을 중앙 처리부(101)의 클럭 보다 빠르게 한 이유는 중앙 처리부(101)에서 선택한 포트의 데이터 값을 리드/라이트시 선입 선출 메모리의 구조의 한계 상 어드레스 값을 순차적으로 증가시키게 된다. 그러나 특정 데이터 값의 어드레스를 액세스하려고 할 때 중앙 처리부의 수행 처리를 저하시키는 결과가 가져오기 때문에, 빠른 클럭을 이용하여 미리 액세스할 데이터를 저장시킴으로써 해결하고자 한 것이다.
그리고, 메시지의 종료 여부를 확인한 후(S305), 메시지가 종료가 아닐 경우 다음 입출력 포트를 선택하여(S308), 그 입출력 포트에 대한 데이터를 라이트하고 입력 포인터를 증가시킨다. 이러한 수순을 거쳐, 단계 S305에서 메시지의 종료가 확인되면 해당 포트의 어드레스 입력 포인터를 리셋시킨다(S306). 데이터가 입력된 해당 포트의 입출력 포트 레지스터(I/O Port Indication Register)를 "1"로 셋함으로써(S307), 중앙 처리부에게 처리해야 할 포트를 알려준다.
도 4는 중앙 처리부가 입출력포트 메모리를 액세스할 경우, 프로그램 로직의 리드 상태 머신의 동작 상태도로서, 프로그램 로직의 하드웨어(register, memory, In-out pointer 등) 초기화시키고(S401), 중앙 처리부(101)에서 포트 선택 레지스터를 검출한 후(S402), 특정 포트 레지스터가 검출되면 해당 어드레스가 메모리 액세스 레지스터인지를 확인한다(S403).
상기 확인 결과 메모리 액세스 동작이 중앙 처리부의 데이터 리드인지를 확인하고(S404), 데이터 리드(D4 = 1)이면 메모리(102)의 데이터를 리드하고(S405), 해당 포트의 출력 포인터를 증가시킨다. 이후, 리드 종료 메시지 여부를 확인하여(S406), 리드 종료 메시지가 아니면 상기한 과정(S403~S406)을 거치면서 데이터를 리드하고, 리드 종료 메시지이면 해당 포트의 어드레스 포인터를 리셋시킨다(S407).
그리고, 상기 단계 S404의 확인 결과 데이터 라이트(D5=1)이면 데이터를 메모리(102)에 라이트하고(S415), 해당 포트의 입력 포인터를 증가시킨 후(S416), 해당 포트의 메모리 종료 메시지 여부를 확인하고(S417), 종료 메시지 이면 상기의 과정(S402~S416)을 거치며, 해당 포트의 메모리 종료 어드레스이면 해당 포트의 어드레스 포인트를 리셋시킨다(S408).
즉, 입출력 포트 중 임의의 포트, 예컨대 "0010(2포트)"에 데이터가 들어오면, 그 포트의 레지스터(0010)를 체크하고, 해당 레지스터의 어드레스가 메모리 액세스 동작이 데이터 리드인지 또는 라이트 인지에 따라 해당 액세스 동작을 중재하면서, 입출력 포인터를 순차적으로 증가시켜 준다.
상기와 같이 출력 포인터에 의해 출력된 데이터는 프로그램 로직 내부에 구현된 중앙처리부 액세스 레지스터에 저장되며, 이 레지스터는 메모리에 맵핑되어 있다.
그리고, 해당 포트에서의 마지막 데이터는 입력 포인터와 출력 포인터로서 판정하는데, 즉, 입력 포인터와 출력 포인터의 값이 0이 아닌 다른 값으로 동일 할 때 마지막 데이터로 구별할 수 있고, 마지막 데이터를 중앙 처리부가 읽게 되면 입력 포인터와 출력 포인터 값은 다시 초기화 값으로 리셋된다.
도 5는 중재 상태 머신의 동작을 나타낸 것으로, 입출력 데이터 메모리 버스(I/O data RAM bus)가 하이 임피던스(Z)이면, 프로그램 로직이 중앙 처리부(101)에서 메모리(102)로의 데이터 리드인지 라이트인지를 판단하고(S502), 메모리(102)로부터 데이터 리드인 경우 메모리(102)에 중앙 처리부 버스(address, data, control bus)를 맵핑시켜 주어 액세스 동작을 수행하도록 하는(S503) 한편, 데이터 라이트일 경우 입출력 포트에 메모리 버스를 맵핑시켜 주어 입출력 장치(111~113)로부터 입력된 데이터 라이트 동작을 수행하도록 한다(S504).
이러한 선입 선출 구조의 메모리에 데이터를 라이트하는 상태 머신과 리드하는 상태 머신, 그리고 이들을 중재하는 상태 머신을 갖는 프로그램 로직을 이용하여 하드웨어 레지스터로서 선입선출 데이터 구조를 구현할 수 있도록 함으로써, 중앙 처리부(101)의 메모리 영역과는 별개의 메모리 영역을 중앙 처리부가 관리할 수 있다.
즉, 프로그램 로직(103)은 중앙 처리부(101)가 메모리(102)의 입출력 데이터를 액세스하려는 경우 중앙 처리부(101)의 어드레스 및 데이터, 제어 버스를 상기 메모리(102)에 맵핑시키고, 입출력 장치(111~113)로부터 데이터를 리드, 라이트할 경우 입/출력 포트 버스를 메모리(102)에 맵핑시킨다.
이상에서 설명한 바와 같이, 본 발명에 따른 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치에 의하면, 다수의 입출력 포트 및 장치를 제어하고자 할 경우 각 입출력 포트에 메모리 영역을 할당하지 않고, 프로그램 로직을 이용하여 하드웨어 레지스터로서 선입선출 데이터 구조를 구현할 수 있도록 함으로써, 중앙 처리부 메모리 영역과는 별개의 메모리 영역을 중앙 처리부가 관리할 수 있고, 중앙 처리부가 제어할 수 있는 메모리 용량과는 관계없이 대용량 메모리 사용 가능 및 다수의 입출력 포트 제어 가능 및 유연한 확장성이 용이해 진다.

Claims (6)

  1. 프로그램 로직을 이용한 메모리 액세스 제어에 있어서,
    입출력 데이터의 메모리 버스 상태가 액세스 상태이면 중앙 처리부의 리드 또는 라이트 액세스 식별자를 확인하는 단계;
    상기 확인 결과 중앙 처리부로부터 메모리 데이터의 리드동작인 경우 메모리에 중앙 처리부의 버스를 맵핑시키는 단계;
    상기 확인 결과 중앙 처리부로부터 메모리 라이트 동작인 경우 입출력 포트에 중앙 처리부의 버스를 맵핑시키는 단계를 포함하는 것을 특징으로 하는 프로그램 로직을 이용한 메모리 액세스 제어방법.
  2. 제 1항에 있어서,
    상기 메모리로의 데이터 리드 동작시에는
    상기 프로그램 로직내의 하드웨어를 초기화한 후 입출력 포트 선택 레지스터를 체크하는 단계;
    상기 체크결과, 특정 포트의 레지스터이면 해당 포트의 메모리 액세스 레지스터와 어드레스가 일치하는 가를 확인하는 단계;
    상기에서 해당 포트의 액세스 레지스터와 어드레스가 일치할 경우 메모리로의 데이터를 리드하고, 해당 포트의 출력 포인터를 증가시키는 단계;
    상기 출력 포인터를 증가시키면서 데이터를 리드하고, 리드 종료 메시지가 검출되면 해당 포트의 어드레스 포인터를 리셋시키는 단계; 및
    상기 입출력 포트 선택 레지스터의 해당 포트를 하이로 세팅하여 중앙 처리부에게 처리해야 할 포트를 알려주는 단계를 포함하는 것을 특징으로 하는 프로그램 로직을 이용한 메모리 액세스 제어방법.
  3. 제 1항에 있어서,
    상기 메모리로의 데이터 라이트 동작시에는,
    상기 프로그램 로직 내의 하드웨어를 초기화한 후 각 포트별로 주기적으로 스캐닝하여 특정 포트의 데이터를 감지하는 단계;
    특정 포트의 데이터가 감지되면 메모리에 데이터를 입력 포인터를 증가시키면서 라이트하고 라이트 종료 메시지를 검출하는 단계;
    상기 라이트 종료 메시지를 검출하면 해당 포인터의 어드레스 입력 포인터를 리셋시키는 단계를 포함하는 것을 특징으로 하는 프로그램 로직을 이용한 메모리 액세스 제어방법.
  4. 다수의 입출력 장치의 액세스를 제어하기 위한 어드레스 및 데이터, 제어 버스 신호를 출력하는 중앙 처리부와,
    어드레스 및 데이터, 제어신호에 의해 데이터를 선입 선출 방식으로 리드 및 라이트하는 메모리와,
    상기 중앙 처리부에 의한 각 입출력 포트의 선택 레지스터 및 액세스 식별자를 확인하여 상기 메모리에 선입 선출 방식으로 데이터의 리드 및 라이트를 중재하는 프로그램 로직수단을 포함하는 것을 특징으로 하는 프로그램 로직을 이용한 메모리의 액세스 제어장치.
  5. 제 4항에 있어서,
    상기 프로그램 로직수단은 상기 선택 레지스터에 해당하는 입출력 포트의 액세스 식별자에 의해 메모리로의 데이터 리드 및 라이트 동작시 입력 및 출력 포인터를 각각 증가시켜 데이터를 액세스하는 것을 특징으로 하는 프로그램 로직을 이용한 메모리의 액세스 제어장치.
  6. 제 4항에 있어서,
    상기 프로그램 로직수단은 중앙 처리부의 동작 클럭 보다 수배의 빠른 상태 머신 클럭으로 메모리로의 데이터를 액세스하는 것을 특징으로 하는 프로그램 로직을 이용한 메모리의 액세스 제어장치.
KR10-2001-0051966A 2001-08-28 2001-08-28 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치 KR100442440B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR10-2001-0051966A KR100442440B1 (ko) 2001-08-28 2001-08-28 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR10-2001-0051966A KR100442440B1 (ko) 2001-08-28 2001-08-28 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치

Publications (2)

Publication Number Publication Date
KR20030018309A KR20030018309A (ko) 2003-03-06
KR100442440B1 true KR100442440B1 (ko) 2004-07-30

Family

ID=27721105

Family Applications (1)

Application Number Title Priority Date Filing Date
KR10-2001-0051966A KR100442440B1 (ko) 2001-08-28 2001-08-28 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치

Country Status (1)

Country Link
KR (1) KR100442440B1 (ko)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265211A (en) * 1992-01-02 1993-11-23 International Business Machines Corporation Arbitration control logic for computer system having dual bus architecture
KR970049652A (ko) * 1995-12-26 1997-07-29 정장호 직접 메모리 억세스에서의 버스사용 중재회로
JPH1063609A (ja) * 1996-08-14 1998-03-06 Meidensha Corp ダイレクト・メモリ・アクセス調停方式
KR19990000587A (ko) * 1997-06-09 1999-01-15 문정환 입출력장치
KR19990004249A (ko) * 1997-06-27 1999-01-15 김영환 컴퓨터의 버스 스위칭 장치
KR20000008112A (ko) * 1998-07-10 2000-02-07 윤종용 메모리 액세스 중재를 위한 로직회로

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5265211A (en) * 1992-01-02 1993-11-23 International Business Machines Corporation Arbitration control logic for computer system having dual bus architecture
KR970049652A (ko) * 1995-12-26 1997-07-29 정장호 직접 메모리 억세스에서의 버스사용 중재회로
JPH1063609A (ja) * 1996-08-14 1998-03-06 Meidensha Corp ダイレクト・メモリ・アクセス調停方式
KR19990000587A (ko) * 1997-06-09 1999-01-15 문정환 입출력장치
KR19990004249A (ko) * 1997-06-27 1999-01-15 김영환 컴퓨터의 버스 스위칭 장치
KR20000008112A (ko) * 1998-07-10 2000-02-07 윤종용 메모리 액세스 중재를 위한 로직회로

Also Published As

Publication number Publication date
KR20030018309A (ko) 2003-03-06

Similar Documents

Publication Publication Date Title
US8516163B2 (en) Hardware-based concurrent direct memory access (DMA) engines on serial rapid input/output SRIO interface
KR0161101B1 (ko) 호스트 인터럽트 및 지시운용을 가지는 네트워크 어댑터
US7484017B1 (en) Dequeuing from a host adapter two-dimensional queue
US5027330A (en) FIFO memory arrangement including a memory location fill indication
JP4034738B2 (ja) データマスクマッピング情報取得方法
JP2004529403A (ja) ユーザによる構成可能なオンチップメモリシステム
US8001296B2 (en) USB controller and buffer memory control method
US10049035B1 (en) Stream memory management unit (SMMU)
JP2021515318A (ja) NVMeベースのデータ読み取り方法、装置及びシステム
US7870310B2 (en) Multiple counters to relieve flag restriction in a multi-queue first-in first-out memory system
US20190324912A1 (en) Cache memory shared by software having different time-sensitivity constraints
KR100605657B1 (ko) 수신된 데이터를 처리하는 방법 및 장치와, 하나 이상의 원격 디바이스로부터 데이터를 수신하는 수신 디바이스
US7945716B2 (en) Serial buffer supporting virtual queue to physical memory mapping
US20180275915A1 (en) Methods for regular and garbage-collection data access and apparatuses using the same
JPH11126182A (ja) コンピュータバス間通信装置及びその方法
US20020133645A1 (en) Direct memory access controller for converting a transfer mode flexibly in accordance with a data transfer counter value
US7035988B1 (en) Hardware implementation of an N-way dynamic linked list
KR100660437B1 (ko) 동적 필터 할당을 가지는 직렬 통신 장치
KR100442440B1 (ko) 프로그램 로직을 이용한 메모리 액세스 제어방법 및 장치
US9093133B2 (en) Buffer for ordering out-of-order data, and corresponding integrated circuit and method for managing a buffer
KR20050116781A (ko) 아날로그 신호 처리 회로, 및 그 데이터 레지스터 재기록방법과 그 데이터 통신 방법
US7158529B2 (en) Device for data stream decoding
US5774745A (en) Method and apparatus for writing and reading entries in an event status queue of a host memory
CN113474761A (zh) 用于配置多个核心独立外围设备的可编程任意序列直接存储器存取控制器
CN111625411A (zh) 半导体装置及调试系统

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20090626

Year of fee payment: 6

LAPS Lapse due to unpaid annual fee