KR20030006937A - 마이크로프로세서 - Google Patents

마이크로프로세서 Download PDF

Info

Publication number
KR20030006937A
KR20030006937A KR1020020017909A KR20020017909A KR20030006937A KR 20030006937 A KR20030006937 A KR 20030006937A KR 1020020017909 A KR1020020017909 A KR 1020020017909A KR 20020017909 A KR20020017909 A KR 20020017909A KR 20030006937 A KR20030006937 A KR 20030006937A
Authority
KR
South Korea
Prior art keywords
address
data
access
write
read
Prior art date
Application number
KR1020020017909A
Other languages
English (en)
Other versions
KR100764581B1 (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 후지쯔 가부시끼가이샤
Publication of KR20030006937A publication Critical patent/KR20030006937A/ko
Application granted granted Critical
Publication of KR100764581B1 publication Critical patent/KR100764581B1/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/10Program control for peripheral devices
    • G06F13/12Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)
  • Advance Control (AREA)
  • Microcomputers (AREA)

Abstract

본 발명은, 마이크로프로세서에 있어서, 하드웨어로 액세스의 순서를 보장하는 것을 목적으로 한다.
직렬 어드레스 레지스터(81)에, 액세스 순서를 보장할 필요가 있는 어드레스를 저장한다. CPU(2)로부터 공급된 어드레스와, 직렬 어드레스 레지스터(81)에 저장되어 있는 어드레스를, 직렬 어드레스 비교기(82)에 의해 비교한다. 비교 결과, 어드레스 일치인 경우에는, 선행하는 액세스 요구가 버스 제어부(5)에 접수되어 동작을 완료할 때까지, 후속의 액세스 요구를 대기시킨다. 선행하는 액세스 요구가 완료한 후, 후속의 액세스 요구를 실행한다.

Description

마이크로프로세서{MICROPROCESSOR}
본 발명은 프로그램의 판독 및 기록의 순서를 바꾸어 실행하는 마이크로프로세서에 관한 것이다.
화상 처리 프로세서 등의, 프로그램의 판독 및 기록의 순서를 바꾸어 실행하는 마이크로프로세서에서는, CPU가 주 기억 장치 또는 주변 시스템에 대하여 프로그램의 순서대로 발생시킨 판독 명령어 및 기록 명령어를, 처리 성능을 높이기 위해서 순서를 바꾸어 실행하는 경우가 있다. 이러한 마이크로프로세서에서는, CPU가, 주변 시스템내의 제어 레지스터와 같이, 액세스의 순서에 따라 의미가 달라지는 레지스터에 액세스하는 경우에는, 액세스 순서를 보장할 필요가 있다.
일반적으로, CPU는 주 기억 장치(메인 메모리)에 저장되어 있는 기계 명령어(machine instruction)나 데이터에 액세스하여 처리(연산)를 행한다. 그러나, 주 기억 장치의 동작 속도는 CPU에 비하여 현저히 저속이기 때문에, 주 기억장치에 대한 판독이나 기록에는 처리 시간이 걸린다. 그래서, CPU와 주 기억 장치 사이에, 주 기억 장치보다도 고속으로 동작하는 캐쉬 메모리를 설치하고, 그 캐쉬 메모리에 명령어나 데이터를 일시적으로 저장함으로써, 주 기억 장치로의 액세스를 줄여, 판독이나 기록에 요하는 처리 시간의 단축을 도모하고 있다.
도 6은, CPU가 주 기억 장치에 데이터를 기록할 때의 데이터의 흐름을 모식적으로 나타낸 개략도이다. 마이크로프로세서(1)는 CPU(2) 및 캐쉬 시스템(3)을 갖고 있다. CPU(2)는 캐쉬 시스템(3)으로 기록 데이터 및 기록 어드레스 데이터(이하, 어드레스 데이터를 간단히 어드레스라고 함)를 출력한다. 기록 데이터 및 기록 어드레스는 버스 제어부(BUSC: 5)를 통해 주 기억 장치(6)로 보내져, 그곳에 기록된다. 이 데이터의 흐름은, 도 6에서 흑색 화살표로 표시되어 있다.
도 7은, CPU가 주 기억 장치로부터 데이터를 판독할 때의 데이터의 흐름을 모식적으로 나타낸 개략도이다. CPU(2)는 캐쉬 시스템(3)으로 판독 대상 데이터의 어드레스, 즉, 판독 어드레스를 출력한다. 판독 어드레스는 버스 제어부(5)를 통해 주 기억 장치(6)로 보내진다. 주 기억 장치(6)에서는, 판독 어드레스에 대응하는 데이터가 판독된다. 그 판독된 데이터는 버스 제어부(5) 및 캐쉬 시스템(3)을 통해 CPU(2)로 보내진다. 이 데이터의 흐름은, 도 7에서 흑색 화살표로 표시되어 있다.
도 8은, CPU가 주변 시스템에 데이터를 기록할 때의 데이터의 흐름을 모식적으로 나타낸 개략도이다. CPU(2)는 캐쉬 시스템(3)으로 기록 데이터 및 기록 어드레스를 출력한다. 기록 데이터 및 기록 어드레스는 버스 제어부(5)를 통해 주변시스템(7)으로 보내져, 그곳의 제어 레지스터 등에 기록된다. 이 데이터의 흐름은, 도 8에 있어서 흑색 화살표로 표시되어 있다.
도 9는, CPU가 주변 시스템의 레지스터 등으로부터 데이터를 판독할 때의 데이터의 흐름을 모식적으로 나타낸 개략도이다. CPU(2)는 캐쉬 시스템(3)으로 판독 어드레스를 출력한다. 판독 어드레스는 버스 제어부(5)를 통해 주변 시스템(7)으로 보내진다. 주변 시스템(7)에서는, 판독 어드레스에 대응하는 데이터가 판독된다. 그 판독된 데이터는 버스 제어부(5) 및 캐쉬 시스템(3)을 통해 CPU(2)로 보내진다. 이 데이터의 흐름은, 도 9에 있어서 흑색 화살표로 표시되어 있다.
도 10은, 종래의 마이크로프로세서의 캐쉬 시스템의 구성을 상세히 나타낸 블록도이다. 도 10에 도시된 바와 같이, 캐쉬 시스템(3)은 캐쉬 블록의 식별 어드레스를 저장하는 태그 RAM(31), 및 데이터를 저장하는 캐쉬 RAM(32)을 갖는다.
또한, 캐쉬 시스템(3)은, 어드레스를 저장하는 레지스터로서, 대기 어드레스 레지스터(wait address register)(WAR: 33), 판독 어드레스 레지스터(read address register)(RAR: 34), 캐쉬 기록 버퍼 어드레스(cache write buffer address)(CWBA: 35), 및 스토어 버퍼 어드레스(store buffer address)(STBA: 36)를 갖는다. 또한, 캐쉬 시스템(3)은, 데이터를 저장하는 레지스터로서, 대기 데이터 레지스터(wait data register)(WDR: 37), 캐쉬 기록 버퍼(cache write buffer)(CWB: 38), 및 스토어 버퍼(store buffer)(STB: 39)를 갖는다. 또한, 캐쉬 시스템(3)은 5개의 셀렉터(41, 43, 44, 45, 46), 및 태그 어드레스 비교기(42)를 갖는다. 또한, 캐쉬 시스템(3)은 캐쉬 시스템(3)의 제어를 행하는, 도시하지 않은 캐쉬 제어부를 갖는다.
도 10에 나타낸 마이크로프로세서의 동작에 대해서 설명한다. 도 11은, 도 10에 나타낸 마이크로프로세서에서, 판독 액세스가 캐쉬 히트(cache hit)했을 때의 어드레스 및 판독 데이터의 흐름을 나타낸 도면이다. 도 11에서는, 어드레스 및 데이터의 경로를 굵은 선으로 나타낸다(도 12 ∼ 도 22 및 도 2 ∼ 도 5에 있어서도 동일). CPU(2)는 셀렉터(41)를 통해, 태그 RAM(31) 및 캐쉬 RAM(32)에 판독 어드레스를 공급한다. 태그 어드레스 비교기(42)는 태그 어드레스와 판독 어드레스를 비교한다. 비교 결과, 이들이 일치하고 있으면(캐쉬 히트), CPU(2)는 셀렉터(45, 46)를 통해, 캐쉬 RAM(32) 중의 어드레스가 일치하고 있는 웨이(way)로부터 판독된 데이터를 수신한다. 또한, 캐쉬 히트 신호가 어서트(assert)된다.
도 12는, 도 10에 나타낸 마이크로프로세서에서, 판독 액세스가 캐쉬 미스(cache miss)했을 때의 어드레스 및 판독 데이터의 흐름을 나타낸 도면이다. CPU(2)는 셀렉터(41)를 통해, 태그 RAM(31)에 판독 어드레스를 공급한다. 태그 어드레스 비교기(42)는 태그 어드레스와 판독 어드레스를 비교한다. 비교 결과, 이들이 일치하고 있지 않으면(캐쉬 미스), 판독 어드레스는 판독 어드레스 레지스터(34)에 저장된다. 저장된 판독 어드레스는, 버스 제어부(5)에 의해 접수될 때까지, 판독 요구와 함께 버스 제어부(5)로 출력된다.
버스 제어부(5)가 판독 요구와 어드레스를 접수한 결과, 버스 제어부(5)로부터 판독 데이터가 공급되면, 그 판독 데이터는 셀렉터(46)를 통해 CPU(2)로 보내짐과 동시에, 셀렉터(44)를 통해 캐쉬 RAM(32)에 데이터가 저장된다. 캐쉬 히트 신호는 니게이트(negate)된다. 엄밀하게 말하면, 캐쉬 RAM(32)에도 CPU(2)로부터 판독 어드레스가 공급되지만, 여기서는 캐쉬 미스인 경우이기 때문에, 도 12에서는 셀렉터(41)와 캐쉬 RAM(32) 사이를, 어드레스의 공급 경로를 나타내는 굵은 선이 아닌 가는 선으로 도시하였다(도 20에 있어서도 동일).
도 13은, 도 10에 나타낸 마이크로프로세서에서, 기록 액세스가 캐쉬 히트했을 때의 어드레스 및 데이터의 흐름을 나타낸 도면이다. CPU(2)는 셀렉터(41)를 통해, 태그 RAM(31) 및 캐쉬 RAM(32)에 기록 어드레스를 공급한다. 태그 어드레스 비교기(42)는 태그 어드레스와 기록 어드레스를 비교한다. 비교 결과, 이들이 일치하고 있으면(캐쉬 히트), 기록 어드레스는 캐쉬 기록 버퍼 어드레스(35) 및 스토어 버퍼 어드레스(36)에 저장된다.
또한, 기록 데이터는 셀렉터(43)를 통해, 캐쉬 기록 버퍼(38) 및 스토어 버퍼(39)에 저장된다. 스토어 버퍼 어드레스(36)에 저장된 기록 어드레스 및 스토어 버퍼(39)에 저장된 기록 데이터는, 기록 요구와 함께 버스 제어부(5)에 공급된다. 한편, 캐쉬 기록 버퍼 어드레스(35)에 저장된 기록 어드레스는, 태그 RAM(31) 및 캐쉬 RAM(32)에 공급된다. 캐쉬 RAM(32) 중의 그 기록 어드레스에 대응하는 영역에, 캐쉬 기록 버퍼(38)에 저장된 기록 데이터가 기록된다. 또한, 캐쉬 히트 신호가 어서트(assert)된다.
도 14는, 도 10에 나타낸 마이크로프로세서에서, 기록 액세스가 캐쉬 미스했을 때의 어드레스 및 데이터의 흐름을 나타낸 도면이다. CPU(2)는 셀렉터(41)를 통해, 태그 RAM(31)에 기록 어드레스를 공급한다. 태그 어드레스 비교기(42)는 태그 어드레스와 기록 어드레스를 비교한다. 비교 결과, 이들이 일치하고 있지 않으면(캐쉬 미스), 기록 어드레스는 스토어 버퍼 어드레스(36)에 저장되는 한편, 기록 데이터는 셀렉터(43)를 통해 스토어 버퍼(39)에 저장된다.
그리고, 버스 제어부(5)가 접수할 때까지, 버스 제어부(5)로 기록 요구, 기록 어드레스 및 기록 데이터가 출력된다. 캐쉬 히트 신호는 니게이트(negate)된다. 엄밀히 말하면, 캐쉬 RAM(32)에도 CPU(2)로부터 기록 어드레스가 공급되지만, 여기서는 캐쉬 미스인 경우이기 때문에, 도 14에서는 셀렉터(41)와 캐쉬 RAM(32) 사이를 가는 선으로 도시하였다(도 2, 도 15 및 도 19에 있어서도 동일).
이어서, 도 10에 나타낸 마이크로프로세서에서, 기록 액세스에 이어서 판독 액세스가 행해지고, 또한 기록와 판독 사이에 어드레스 의존이 있는 경우의 동작에 대해서 설명한다. 도 15 내지 도 18은, 이 경우의 어드레스 및 데이터의 흐름을 순차적으로 나타낸 도면이다. CPU(2)는 캐쉬 시스템(3)에 대하여 기록 요구를 행하고, 태그 RAM(31)에 기록 어드레스를 출력한다. 태그 어드레스 비교기(42)에서 태그 어드레스와 기록 어드레스를 비교한 결과, 캐쉬 미스이면, 스토어 버퍼 어드레스(36) 및 스토어 버퍼(39)에 각각 기록 어드레스 및 기록 데이터가 저장된다. 그리고, 버스 제어부(5)로 기록 요구가 출력된다(도 15 참조).
계속해서, CPU(2)는 캐쉬 시스템(3)에 대하여 판독 요구를 행한다. 이 판독 요구에 의해, 판독 어드레스는 스토어 버퍼 어드레스(36)에 저장되어 있는 어드레스와 비교되며, 일치하는 경우에는 대기 어드레스 레지스터(33)에 저장된다. 그리고, 선행하는 기록 요구가 버스 제어부(5)에 접수되어 동작을 완료할 때까지, 판독어드레스는 대기 어드레스 레지스터(33)에 저장된다(도 16 참조).
선행의 기록 요구가 완료되면, 재차 후속의 판독 요구가 실행된다. 캐쉬 미스이면, 판독 어드레스는 판독 어드레스 레지스터(34)에 저장되고, 버스 제어부(5)로 판독 요구와 어드레스가 출력된다(도 17 참조). 버스 제어부(5)는 판독 요구를 접수하여, 요구된 데이터를 캐쉬 시스템(3)으로 반환(return)한다. 그 반환된 데이터는 캐쉬 시스템(3)으로부터 CPU(2)로 출력된다(도 18 참조). 이와 같이, 기록 액세스와 판독 액세스 사이에 어드레스 의존(address dependency)이 있는 경우에는, 기록 요구나 판독 요구의 순서가 바뀌는 일은 없다.
이어서, 도 10에 나타낸 마이크로프로세서에서, 기록 액세스에 이어서 판독 액세스가 행해지고, 또한 기록와 판독 사이에 어드레스 의존이 없는 경우의 동작에 대해서 설명한다. 도 19 내지 도 22는, 이 경우의 어드레스 및 데이터의 흐름을 순차적으로 나타낸 도면이다. CPU(2)는 캐쉬 시스템(3)에 대하여 기록 요구를 행하고, 태그 RAM(31)에 기록 어드레스를 출력한다. 태그 어드레스 비교기(42)에서 태그 어드레스와 기록 어드레스를 비교한 결과, 캐쉬 미스이면, 스토어 버퍼 어드레스(36) 및 스토어 버퍼(39)에 각각 기록 어드레스 및 기록 데이터가 저장된다. 그리고, 버스 제어부(5)로 기록 요구가 출력된다(도 19 참조).
계속해서, CPU(2)는 캐쉬 시스템(3)에 대하여 판독 요구를 행하고, 태그 RAM(31)에 판독 어드레스를 공급한다. 태그 어드레스 비교기(42)에서의 어드레스 비교 결과, 캐쉬 미스이면, 판독 어드레스는 판독 어드레스 레지스터(34)에 저장된다. 그리고, 버스 제어부(5)가 접수할 때까지, 버스 제어부(5)로 판독 요구와 어드레스가 출력된다(도 20 참조).
여기서, 선행의 기록 요구와 후속의 판독 요구 사이에는 어드레스 의존이 없기 때문에, 기록 요구와 판독 요구는 동시에 버스 제어부(5)로 출력되게 된다. 통상, 판독 요구와 기록 요구에서는, CPU(2)가 연산에 사용할 가능성이 있는 판독 요구가 우선되기 때문에, 버스 제어부(5)는 우선 판독 요구를 접수한다. 그리고, 버스 제어부(5)는 요구된 데이터를 캐쉬 시스템(3)으로 반환하고, 그 반환된 데이터는 그대로 CPU(2)에 공급된다(도 21 참조). 계속해서, 버스 제어부(5)는 기록 요구를 접수한다(도 22 참조). 이와 같이, 기록 액세스와 판독 액세스 사이에 어드레스 의존이 없는 경우에는, 처리 능력을 높이기 위해서 기록 요구나 판독 요구의 순서가 바뀌는 경우가 있다.
상술한 바와 같이, 어드레스 의존이 없는 액세스에 대해서는 액세스 순서를 보장할 필요가 없다. 그러나, 어드레스 의존의 유무에 관계없이 액세스의 순서에 따라 의미가 변하는 레지스터에 액세스하는 경우에는, 액세스 순서를 보장할 필요가 있다. 예를 들면, 인텔사의 8254 호환의 타이머에 설치되어 있는 타이머 컨트롤 워드 레지스터(timer control word register)(TCTR)에 대하여 기록을 행한 후, 전혀 다른 어드레스를 갖는 타이머 컨트롤 상태 레지스터(timer control status register)(TCSR0∼TCSR3)의 데이터를 판독하면, 데이터가 변하는 경우가 있다.
이 타이머 컨트롤 워드 레지스터(TCTR)는, SC1(Select Counter 1) 및 SC0의 값이 11일 때에, 리드 백 커맨드(read back command)가 된다. 리드 백 커맨드일때에 타이머 컨트롤 상태 레지스터(TCSR0∼TCSR3)의 값을 판독하면, 상태 래치된 카운트값(status latched count value)이 된다. 그것에 대하여, 리드 백 커맨드가 아닐 때, 즉, SC1 및 SC0의 값이 11이 아닐 때에, 타이머 컨트롤 상태 레지스터(TCSR0∼TCSR3)의 값을 판독하면, 그 때의 카운트값이 된다.
따라서, 이러한 레지스터에 액세스할 때에는, 액세스 순서를 보장하기 위해서, 예를 들면, 도 23에 도시된 바와 같이, 타이머 컨트롤 워드 레지스터(TCTR)로의 액세스와, 타이머 컨트롤 상태 레지스터(TCSR0∼TCSR3)로의 액세스 사이에, membar 명령어와 같이, 메인 명령어(main instruction) 이전에 실행된 로드/스토어 명령어의 완료를 대기하도록 하는 명령어를 삽입할 필요가 있다. 이러한 경우, 종래에는 소프트웨어에 의해 액세스 순서를 보장하고 있다. 그러나, 컴파일러에서는 이러한 코드를 출력하는 것이 곤란하기 때문에, 수작업에 의해(manually) 액세스 순서를 보장하도록 프로그램을 작성할 필요가 있다. 그 때문에, 종래에는 프로그래밍 효율이 나쁘다는 문제점이 있었다.
본 발명은 상기 문제점을 감안하여 이루어진 것으로, 하드웨어로 액세스의 순서를 보장할 수 있는 구성의 마이크로프로세서를 제공하는 것을 목적으로 한다.
도 1은 본 발명에 따른 마이크로프로세서의 캐쉬 시스템의 구성예를 상세히 나타낸 블록도.
도 2는 도 1에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 없음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 3은 도 1에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 없음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 4는 도 1에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 없음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 5는 도 1에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 없음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 6은 CPU가 주 기억 장치에 데이터를 기록할 때의 데이터의 흐름을 모식적으로 나타낸 개략도.
도 7은 CPU가 주 기억 장치로부터 데이터를 판독할 때의 데이터의 흐름을 모식적으로 나타낸 개략도.
도 8은 CPU가 주변 시스템에 데이터를 기록할 때의 데이터의 흐름을 모식적으로 나타낸 개략도.
도 9는 CPU가 주변 시스템으로부터 데이터를 판독할 때의 데이터의 흐름을 모식적으로 나타낸 개략도.
도 10은 종래의 마이크로프로세서의 캐쉬 시스템의 구성을 상세히 나타낸 블록도.
도 11은 도 10에 나타낸 마이크로프로세서에서 판독 액세스가 캐쉬 히트했을 때의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 12는 도 10에 나타낸 마이크로프로세서에서 판독 액세스가 캐쉬 미스했을 때의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 13은 도 10에 나타낸 마이크로프로세서에서 기록 액세스가 캐쉬 히트했을 때의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 14는 도 10에 나타낸 마이크로프로세서에서 기록 액세스가 캐쉬 미스했을 때의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 15는 도 10에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 있음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 16은 도 10에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독액세스가 행해질 때(어드레스 의존 있음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 17은 도 10에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 있음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 18은 도 10에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 있음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 19는 도 10에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 없음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 20은 도 10에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 없음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 21은 도 10에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 없음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 22는 도 10에 나타낸 마이크로프로세서에서 기록 액세스에 이어서 판독 액세스가 행해질 때(어드레스 의존 없음)의 어드레스 및 데이터의 흐름을 나타낸 도면.
도 23은 종래의 소프트웨어로 액세스 순서를 보장하기 위한 프로그램 구성의 일부를 나타낸 도면.
〈도면의 주요부분에 대한 부호의 설명〉
81 : 직렬 어드레스 레지스터
(액세스 순서를 보장할 필요가 있는 어드레스 영역을 저장하는 레지스터)
82 : 직렬 어드레스 비교기(비교기)
상기 목적을 달성하기 위해, 본 발명은, 액세스 순서를 보장할 필요가 있는 어드레스를 저장하는 레지스터, 및 이 레지스터에 저장되어 있는, 액세스 순서를 보장할 필요가 있는 어드레스와, CPU로부터의 액세스 요구의 어드레스를 비교하는 어드레스 비교기를 구비하고, CPU로부터 공급된 어드레스와, 상기 레지스터에 저장되어 있는 어드레스를 비교하여, 이들이 일치하고 있으면, 선행하는 액세스 요구를 먼저 실행하고, 그것이 완료한 후에 후속의 액세스 요구를 실행하는 것을 특징으로 한다.
본 발명에 따르면, CPU로부터 공급된 어드레스와, 액세스 순서를 보장할 필요가 있는 어드레스를 비교하여, 이들이 일치하고 있으면, 선행하는 액세스 요구를 먼저 실행하고, 그것이 완료한 후에 후속의 액세스 요구를 실행하기 때문에, 액세스 순서를 보장할 필요가 있는 액세스 요구에 대하여, 액세스 순서를 보장할 수 있다.
이하에, 본 발명의 실시예에 대해서 도면을 참조하면서 상세히 설명한다. 도 1은 본 발명에 관한 마이크로프로세서의 캐쉬 시스템의 구성예를 나타낸 블록도이다. 도 1에 나타낸 바와 같이, 캐쉬 시스템(8)은 직렬 어드레스 레지스터(SAR: 81) 및 직렬 어드레스 비교기(82)를 갖는다.
또한, 캐쉬 시스템(8)은 태그 RAM(31), 캐쉬 RAM(32), 대기 어드레스 레지스터(WAR: 33), 판독 어드레스 레지스터(RAR: 34), 캐쉬 기록 버퍼 어드레스(CWBA: 35), 스토어 버퍼 어드레스(STBA: 36), 대기 데이터 레지스터(WDR: 37), 캐쉬 기록 버퍼(CWB: 38), 및 스토어 버퍼(STB: 39)를 갖는다. 또한, 캐쉬 시스템(8)은 5개의 셀렉터(41, 43, 44, 45, 46), 및 태그 어드레스 비교기(42)를 갖는다. 또한, 캐쉬 시스템(8)은 캐쉬 시스템(8)의 제어를 행하는, 도시하지 않은 캐쉬 제어부를 갖는다.
직렬 어드레스 레지스터(81)는 액세스 순서를 보장할 필요가 있는 어드레스를 저장하기 위한 레지스터이다. 예를 들면, CPU(2)가 액세스 순서를 보장할 필요가 있는 어드레스의 값을, 직렬 어드레스 레지스터(81)에 데이터로서 기록함으로써, 직렬 어드레스 레지스터(81)에 어드레스가 저장된다.
직렬 어드레스 비교기(82)는, 후술하는 셀렉터(41)에서 선택된 어드레스와, 직렬 어드레스 레지스터(81)에 저장되어 있는 어드레스와의 비교를 행한다. 그 비교의 결과, 어드레스 일치인 경우에는, 도시하지 않은 캐쉬 제어부에 공급되는 직렬화 히트 신호(serialize hit signal)가 어서트(assert)된다. 직렬화 히트 신호가 어서트되면, 도시하지 않은 캐쉬 제어부는 액세스 순서가 보장되도록 하는 제어를 행한다. 직렬 어드레스 비교기(82)에서의 어드레스 비교의 결과가 불일치인 경우에는, 직렬화 히트 신호가 니게이트(negate)된다. 이 경우에는, 액세스 순서는 보장되지 않는다.
대기 어드레스 레지스터(33)는, 어떠한 요인으로 실행을 기다리게 될 때에, 어드레스를 저장하는 레지스터이다. 판독 어드레스 레지스터(34)는 버스 제어부(5)로의 판독 어드레스를 저장하는 레지스터이다. 캐쉬 기록 버퍼 어드레스(35)는 캐쉬 시스템(8)으로의 기록 어드레스를 저장하는 레지스터이다.
스토어 버퍼 어드레스(36)는 버스 제어부(5)로의 기록 어드레스를 저장하는 레지스터이다. 대기 데이터 레지스터(37)는, 어떠한 요인으로 실행을 기다리게 될 때에, 데이터를 저장하는 레지스터이다. 캐쉬 기록 버퍼(38)는 캐쉬 시스템(8)으로의 기록 데이터를 저장하는 레지스터이다. 스토어 버퍼(39)는 버스 제어부(5)로의 기록 데이터를 저장하는 레지스터이다.
제1 셀렉터(41)는, CPU(2)로부터 공급된 어드레스, 대기 어드레스 레지스터(33)에 저장된 어드레스, 판독 어드레스 레지스터(34)에 저장된 어드레스, 및 캐쉬 기록 버퍼 어드레스(35)에 저장된 어드레스 중에서 하나를 선택한다. 셀렉터(41)에서 선택된 어드레스는 대기 어드레스 레지스터(33), 판독 어드레스 레지스터(34), 캐쉬 기록 버퍼 어드레스(35), 또는 스토어 버퍼 어드레스(36)에 공급되는 동시에, 태그 RAM(31), 캐쉬 RAM(32), 및 태그 어드레스 비교기(42)에 공급된다.
태그 어드레스 비교기(42)는 웨이(way)의 수 만큼 비교기를 가지며, 각 비교기는 셀렉터(41)에서 선택된 어드레스와, 각 웨이의 태그 RAM(31)에 저장되어 있는 어드레스와의 비교를 행한다. 그 비교의 결과, 어드레스 일치인 경우에는, 도시하지 않은 캐쉬 제어부에 공급되는 캐쉬 히트 신호가 어서트된다. 어드레스가 불일치인 경우에는, 캐쉬 히트 신호가 니게이트된다.
제2 셀렉터(43)는, CPU(2)로부터 공급된 데이터 및 대기 데이터 레지스터(37)에 저장된 데이터 중 어느 한쪽을 선택한다. 셀렉터(43)에서 선택된 데이터는 대기 데이터 레지스터(37), 캐쉬 기록 버퍼(38), 또는 스토어 버퍼(39)에 공급된다.
제3 셀렉터(44)는, 버스 제어부(5)로부터 공급된 판독 데이터 및 캐쉬 기록 버퍼(38)에 저장된 데이터 중 어느 한쪽을 선택한다. 이 셀렉터(44)에서 선택된 데이터는 캐쉬 RAM(32)에 공급된다.
제4 셀렉터(45)는, 태그 어드레스 비교기(42)의 비교 결과에 기초하여, 어느한 웨이의 캐쉬 RAM(32)으로부터의 출력 데이터를 선택한다. 제5 셀렉터(46)는 제4 셀렉터(45)에서 선택된 데이터 및 버스 제어부(5)로부터 공급된 판독 데이터 중 어느 한쪽을 선택한다. 이 제5 셀렉터(46)에서 선택된 데이터는 CPU(2)에 공급된다.
이어서, 도 1에 도시된 마이크로프로세서에서, 기록 액세스에 이어서 판독 액세스가 행해지고, 또한 기록과 판독 사이에 어드레스 의존이 없는 경우의 동작에 대해서 설명한다. 도 2 내지 도 5는, 이 경우의 어드레스 및 데이터의 흐름을 순차적으로 나타낸 도면이다. 직렬 어드레스 레지스터(81)에는, 액세스 순서를 보장할 필요가 있는 어드레스가 미리 저장되어 있다.
CPU(2)는, 캐쉬 시스템(8)에 대하여 기록 요구를 행하고, 기록 어드레스를 출력한다. 이 기록 어드레스는 제1 셀렉터(41)를 통해, 태그 RAM(31) 및 태그 어드레스 비교기(42)에 공급된다. 태그 어드레스 비교기(42)에서 태그 어드레스와 기록 어드레스를 비교한 결과, 캐쉬 미스이면, 기록 어드레스는 스토어 버퍼 어드레스(36)에 저장된다. 또한, CPU(2)로부터 공급된 기록 데이터는 제2 셀렉터(43)를 통해 스토어 버퍼(39)에 저장된다. 그리고, 버스 제어부(5)로 기록 요구가 출력된다(도 2 참조).
계속해서, CPU(2)는 캐쉬 시스템(8)에 대하여 판독 요구를 행하고, 판독 어드레스를 출력한다. 이 판독 어드레스는 직렬 어드레스 비교기(82)에 공급된다. 직렬 어드레스 비교기(82)는 판독 어드레스와 직렬 어드레스 레지스터(81)에 저장되어 있는 어드레스를 비교한다. 비교 결과, 어드레스가 일치하고 있으면, 판독어드레스는 대기 어드레스 레지스터(33)에 저장된다. 그리고, 선행하는 기록 요구가 버스 제어부(5)에 접수되어, 동작을 완료할 때까지, 판독 어드레스는 대기 어드레스 레지스터(33)에 저장된다(도 3 참조). 또한, 캐쉬 시스템(8)은 이 이후의 CPU(2)로부터의 요구를 접수하지 않는다.
선행의 기록 요구가 완료되면, 재차 후속의 판독 요구가 실행된다. 태그 어드레스 비교기(42)에서의 어드레스 비교의 결과, 캐쉬 미스이면, 판독 어드레스는 판독 어드레스 레지스터(34)에 저장된다. 그리고, 버스 제어부(5)에 판독 요구와 어드레스가 출력된다(도 4 참조). 버스 제어부(5)는 판독 요구를 접수하여, 요구된 데이터를 캐쉬 시스템(8)으로 반환한다. 그 반환된 데이터는 캐쉬 시스템(8)으로부터 CPU(2)로 출력된다(도 5 참조).
또, 기록 액세스에서 캐쉬 히트인 경우, 판독 액세스에서 캐쉬 히트인 경우, 또는 기록와 판독 사이에 어드레스 의존이 있는 경우에 대해서는, 종래와 동일하므로, 설명을 생략한다.
상술한 실시예 따르면, 직렬 어드레스 레지스터(81) 및 직렬 어드레스 비교기(82)를 가지며, 직렬 어드레스 레지스터(81)에 액세스 순서를 보장할 필요가 있는 어드레스를 저장하고, CPU(2)로부터 공급된 어드레스와, 직렬 어드레스 레지스터(81)에 저장되어 있는 어드레스를 비교하여, 이들이 일치하고 있으면, 선행하는 액세스 요구가 버스 제어부(5)에 접수되어 동작을 완료할 때까지, 후속의 액세스 요구는 대기하는 상태가 되기 때문에, 액세스 순서를 보장할 필요가 있는 액세스 요구에 대하여, 액세스 순서를 보장할 수 있다. 따라서, 하드웨어로 액세스의 순서를 보장할 수 있기 때문에, 프로그래머는 액세스 순서 등의 제한을 고려하지 않고서, 효율적으로 프로그래밍할 수 있다.
이상에 있어서, 본 발명은 전술한 실시예의 설명에 한정되지 않고, 여러 가지 변경 가능한 것은 물론이다. 예를 들면, 직렬 어드레스 레지스터(81)를 복수개 갖는 구성으로 하여도 좋다. 그렇게 하면, 복수의 어드레스에 대하여 액세스 순서를 보장할 수 있다. 또한, 직렬 어드레스 레지스터(81)가 순서를 보장해야 할 어드레스 영역의 크기를 설정할 수 있는 구성으로 하여도 좋다. 또한, 직렬 어드레스 레지스터(81)의 저장값을, 미리 설정하여 이루어진 고정값으로 하여도 좋다. 직렬 어드레스 레지스터(81)의 저장값을 고정하는 경우에는, 캐쉬 시스템(8)의 제어가 용이해진다.
본 발명에 따르면, CPU로부터 공급된 어드레스와, 액세스 순서를 보장할 필요가 있는 어드레스를 비교하여, 이들이 일치하고 있으면, 선행하는 액세스 요구를 먼저 실행하고, 그것이 완료한 후에 후속의 액세스 요구를 실행하기 때문에, 액세스 순서를 보장할 필요가 있는 액세스 요구에 대하여, 액세스 순서를 보장할 수 있다. 따라서, 하드웨어로 액세스의 순서를 보장할 수 있기 때문에, 프로그래머는 액세스 순서 등의 제한을 고려하지 않고서, 효율적으로 프로그래밍할 수 있다.

Claims (8)

  1. 액세스 순서(access order)를 보장할 필요가 있는 어드레스 영역(address area)을 저장하는 레지스터와,
    상기 레지스터에 저장되어 있는, 액세스 순서를 보장할 필요가 있는 어드레스 영역과, CPU로부터의 액세스 요구의 어드레스 영역을 비교하여, 상기 양 어드레스 영역의 어드레스가 일치하고 있을 때에, 선행하는 액세스 요구를 먼저 실행시킨 후에 후속의 액세스 요구를 실행시키기 위한 신호를 출력하는 비교기를 포함하는 마이크로프로세서.
  2. 제1항에 있어서, 상기 레지스터에 저장되는, 액세스 순서를 보장할 필요가 있는 어드레스 영역은 고정(fixed)인 것인 마이크로프로세서.
  3. 제1항에 있어서, 상기 레지스터에 저장되는, 액세스 순서를 보장할 필요가 있는 어드레스 영역의 크기는 설정 가능한 것인 마이크로프로세서.
  4. 제2항에 있어서, 상기 레지스터에 저장되는, 액세스 순서를 보장할 필요가 있는 어드레스 영역의 크기는 설정 가능한 것인 마이크로프로세서.
  5. 제1항에 있어서, 상기 레지스터에 저장되는, 액세스 순서를 보장할 필요가있는 어드레스 영역은 복수개 설정 가능한 것인 마이크로프로세서.
  6. 제2항에 있어서, 상기 레지스터에 저장되는, 액세스 순서를 보장할 필요가 있는 어드레스 영역을 복수개 포함하는 것인 마이크로프로세서.
  7. 제3항에 있어서, 상기 레지스터에 저장되는, 액세스 순서를 보장할 필요가 있는 어드레스 영역은 복수개 설정 가능한 것인 마이크로프로세서.
  8. 제4항에 있어서, 상기 레지스터에 저장되는, 액세스 순서를 보장할 필요가 있는 어드레스 영역을 복수개 포함하는 것인 마이크로프로세서.
KR1020020017909A 2001-07-17 2002-04-02 마이크로프로세서 KR100764581B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2001216223A JP2003029967A (ja) 2001-07-17 2001-07-17 マイクロプロセッサ
JPJP-P-2001-00216223 2001-07-17

Publications (2)

Publication Number Publication Date
KR20030006937A true KR20030006937A (ko) 2003-01-23
KR100764581B1 KR100764581B1 (ko) 2007-10-09

Family

ID=19050728

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020020017909A KR100764581B1 (ko) 2001-07-17 2002-04-02 마이크로프로세서

Country Status (6)

Country Link
US (1) US6823406B2 (ko)
EP (1) EP1278121B1 (ko)
JP (1) JP2003029967A (ko)
KR (1) KR100764581B1 (ko)
DE (1) DE60216016T2 (ko)
TW (1) TWI222567B (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080201531A1 (en) * 2006-09-29 2008-08-21 Kornegay Marcus L Structure for administering an access conflict in a computer memory cache
US20080082755A1 (en) * 2006-09-29 2008-04-03 Kornegay Marcus L Administering An Access Conflict In A Computer Memory Cache
GB2469299B (en) * 2009-04-07 2011-02-16 Imagination Tech Ltd Ensuring consistency between a data cache and a main memory
JP5482197B2 (ja) 2009-12-25 2014-04-23 富士通株式会社 演算処理装置、情報処理装置及びキャッシュメモリ制御方法
US8392621B2 (en) * 2010-06-22 2013-03-05 International Business Machines Corporation Managing dataflow in a temporary memory

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE4237417C2 (de) 1992-03-25 1997-01-30 Hewlett Packard Co Datenverarbeitungssystem
US5467473A (en) * 1993-01-08 1995-11-14 International Business Machines Corporation Out of order instruction load and store comparison
EP0679990B1 (en) * 1994-04-28 2000-03-01 Hewlett-Packard Company A computer apparatus having a means to force sequential instruction execution
US5666494A (en) * 1995-03-31 1997-09-09 Samsung Electronics Co., Ltd. Queue management mechanism which allows entries to be processed in any order
US5737636A (en) * 1996-01-18 1998-04-07 International Business Machines Corporation Method and system for detecting bypass errors in a load/store unit of a superscalar processor
US6006325A (en) * 1996-12-19 1999-12-21 Institute For The Development Of Emerging Architectures, L.L.C. Method and apparatus for instruction and data serialization in a computer processor
WO1999008184A1 (en) 1997-08-06 1999-02-18 Advanced Micro Devices, Inc. An apparatus and method for accessing special registers without serialization
US6148394A (en) 1998-02-10 2000-11-14 International Business Machines Corporation Apparatus and method for tracking out of order load instructions to avoid data coherency violations in a processor
JPH11249959A (ja) 1998-03-02 1999-09-17 Matsushita Electric Ind Co Ltd キャッシュメモリ制御方法および装置
US6266768B1 (en) * 1998-12-16 2001-07-24 International Business Machines Corporation System and method for permitting out-of-order execution of load instructions
JP3525070B2 (ja) * 1999-01-27 2004-05-10 松下電器産業株式会社 アクセス制御装置及びアクセス方法
US6412057B1 (en) * 1999-02-08 2002-06-25 Kabushiki Kaisha Toshiba Microprocessor with virtual-to-physical address translation using flags
US6266767B1 (en) * 1999-04-22 2001-07-24 International Business Machines Corporation Apparatus and method for facilitating out-of-order execution of load instructions
JP4588158B2 (ja) * 2000-03-28 2010-11-24 富士通セミコンダクター株式会社 半導体集積回路

Also Published As

Publication number Publication date
EP1278121A2 (en) 2003-01-22
EP1278121A3 (en) 2004-06-23
US6823406B2 (en) 2004-11-23
DE60216016T2 (de) 2007-04-05
US20030018854A1 (en) 2003-01-23
DE60216016D1 (de) 2006-12-28
EP1278121B1 (en) 2006-11-15
TWI222567B (en) 2004-10-21
JP2003029967A (ja) 2003-01-31
KR100764581B1 (ko) 2007-10-09

Similar Documents

Publication Publication Date Title
US6049867A (en) Method and system for multi-thread switching only when a cache miss occurs at a second or higher level
JP3259969B2 (ja) キャッシュメモリ制御装置
US6782454B1 (en) System and method for pre-fetching for pointer linked data structures
US8533399B2 (en) Cache directory look-up re-use as conflict check mechanism for speculative memory requests
US6816960B2 (en) Cache consistent control of subsequent overlapping memory access during specified vector scatter instruction execution
US6643755B2 (en) Cyclically sequential memory prefetch
US20060259746A1 (en) Microprocessor and control method thereof
US20080270707A1 (en) Data processor
US5784711A (en) Data cache prefetching under control of instruction cache
US6606687B1 (en) Optimized hardware cleaning function for VIVT data cache
EP0436305A2 (en) System and method for efficiently supporting access to I/O devices through large direct-mapped data caches
US5598574A (en) Vector processing device
US20030105929A1 (en) Cache status data structure
US20030088636A1 (en) Multiprocessor system having distributed shared memory and instruction scheduling method used in the same system
KR100764581B1 (ko) 마이크로프로세서
US20030196072A1 (en) Digital signal processor architecture for high computation speed
JP2020095345A (ja) 演算処理装置、メモリ装置、及び演算処理装置の制御方法
US11176039B2 (en) Cache and method for managing cache
US6349370B1 (en) Multiple bus shared memory parallel processor and processing method
JP5380102B2 (ja) マイクロプロセッサ
US20090106497A1 (en) Apparatus, processor and method of controlling cache memory
US5933856A (en) System and method for processing of memory data and communication system comprising such system
JP2762798B2 (ja) 命令キャッシュを有するパイプライン構成の情報処理装置
KR960029986A (ko) 데이타처리장치 및 캐쉬메모리제어방법
JPWO2002069150A1 (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: 20120924

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20130924

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20141001

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20150918

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20160920

Year of fee payment: 10

FPAY Annual fee payment

Payment date: 20170919

Year of fee payment: 11

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 12