레이블이 MIPS memory map인 게시물을 표시합니다. 모든 게시물 표시
레이블이 MIPS memory map인 게시물을 표시합니다. 모든 게시물 표시

2010년 1월 21일 목요일

MIPS memory map

MIPS 부트코드를 보다가 cached, uncached 라는 것을 발견해서 memory map을 좀 찾아 보았다.


이것이 MIPS의 메모리 구조이다.
각 영역에 대한 설명은 다음과 같다.

  • KUSEG
    • 사용자가 사용하는 공간
    • TLB를 통해 physical addr로 변환
  • KSEG0 (512M)
    • cached (항상 cache를 사용함)
    • cache 초기화 이후에 사용
    • 상위 1bit (최상위 bit)를 0으로 만들어 physical addr로 변환
    • TLB를 거치지 않고 access
    • 커널이 이 영역을 사용
  • KSEG1(512M)
    • uncached (cache를 사용하지 않음)
    • 시스템에서 cache가 정의되기 이전에 사용. (ex. reset vector addr = 0xBFC00000)
    • 상위 3bit를 0으로 만들어 physical addr로 변환
    • I/O 주변기기에 mapping (I/O 장치들은 그 특성상 cache를 사용해서는 안됨.)
  • KSEG2(512M)
    • 커널을 통해서 access 가능
    • TLB를 통해 physical addr로 변환