블로그 이미지
No pain, no gain!
lepoussin

Tag

Notice

Recent Post

Recent Comment

Recent Trackback

Archive

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
  • total
  • today
  • yesterday
05-17 17:11
1. 시스템 버스
  - 데이터 버스(data bus)
  - 어드레스 버스(address bus)
  - 제어 버스(control bus)
  1) 마스터(Master) : 데이터를 요구하는 구동 주체 ex) DMA 제어기
  2) 슬레이브(Slave) : 이에 응답하는 메모리나 입출력 장치

2. 폰노이만 버스 구조
  - 명령어와 데이터를 위한 메모리 인터페이스가 하나만 존재하는 구조
  - 명령어를 읽을 때 데이터를 읽거나 쓸 수 없다.
  - 버스 구조가 단순하여 하드웨어 설계하기 편함
  - ex) 대부분의 IBM 계열, ARM7 등

3. 하버드 버스 구조
  - 명령어와 데이터를 위한 메모리 인터페이스가 분리된 구조
  - 명령어를 읽을 때도 데이터를 읽거나 쓸 수 있고, 데이터를 읽고 쓰는 동안에도 명령을 읽을 수 있다.
  - 폰노이만 버스 구조보다 성능이 우수하지만 버스 구조가 복잡하여 하드웨어 설계하기에는 어려움
  - ex) 대부분의 ARM9, ARM10, ARM11, XScale 등
posted by lepoussin
1. 입출력 장치 제어
  1) I/O 맵 방식(I/O-mapped peripheral)
    - 입출력 장치 전용의 주소 공간을 확보
    - in 또는 out과 같은 별도의 명령 사용
  2) 메모리 맵 방식(Memory mapped peripheral)
    - 메모리의 일부를 입출력 장치 공간으로 할당
    - 주의사항 : I/O 영역 변수는 volatile 타입으로 선언, I/O 영역은 Non-cacheable로 설정

2. 입출력 장치의 자원관리
  - 입출력 장치로 입력 또는 출력 되는 데이터를 프로세서와 메모리 사이에 주고 받는 방법
  1) 폴링(Polling) 방식 : 프로세서가 하나의 프로그램이나 장치들이 어떤 상태에 있는지를 지속적으로 검사하는 방식
  2) 인터럽트 : 외부의 입출력 장치에서 프로세서에게 처리를 요청하면 프로세서는 현재 처리하고 있는 프로그램
을 일시적으로 멈추고 입출력 처리하는 방식
    - 프로세서는  한 번에 한 개의 명령만을 수행 → 모든 작업이 동시에 수행되는 것처럼 보이게 할 수 있음(멀티태스킹)
    - 인터럽트 제어기 : 여러 개의 입출력 장치로부터 구동되는 인터럽트를 효과적으로 처리하기 위한 장치
      ⑴ 마스크(Mask) 레지스터 : 여러 입출력 장치의 인터럽트에 대한 사용여부를 제어위한 레지스터
      ⑵ 펜딩(Pending) 레지스터 : 어떤 인터럽트가 발생되었는지를 저장
      ⑶ 과정
        ① 마스크 레지스터에 의하여 사용하도록 설정된 인터럽트 중 하나라도 인터럽트가 발생하면 프로세서로 인터럽트 요청 신호(IRQ)가 구동
        ② 프로세서는 인터럽트를 인지하여 처리하기 전에 펜딩 레지스터를 검사하여 발생된 인터럽트 중 우선순위가 가장 높은 인터럽트를 처리
    - 모든 인터럽트 발생은 프로세스에 하드웨어적으로 알려짐
    - 인터럽트 발생 시, 사용자 프로그램의 개입없이 정해진 절차에 의해서 정해진 위치에 있는 명령이나 주소정보를 이용하여 실제 인터럽트를 서비스 하는 절차(ISR : Interrupt Service Routine)가 있는 위치로 분기한 다음 발생된 인터럽트의 처리 여부를 결정하고 해당 입출력 동작 수행
    - 인터럽트 벡터(Vector) : 인터럽트 발생시 프로세서가 처리하기 위한 명령 또는 주소가 저장된 공간
      ⑴ 고정 인터럽트 방식(Fixed Interrupt) : 인터럽트가 발생하면 처리할 주소가 고정
      ⑵ 벡터 인터럽트 방식(Vectored Interrupt) : 주변 장치가 인터럽트를 처리할 주소를 제공하는 방식으로 서로 다른 벡터 주소를 가짐
  3) DMA(Direct Memory Access) : 프로세서의 개입 없이 입출력 장치와 기억장치 사이에 데이터를 전송하는 방식
    - 프로세서 → DMA 제어기 : 전송할 데이터가 저장된 주기억 장치의 시작 주소, 입출력 장치의 주소, 전송할 데이터의 크기 및 제어 정보
    - DMA 제어기 : 프로세서나 다른 버스 마스터가 주기억장치를 액세스하지 않는 동안에 시스템 버스를 사용하여 데이터를 전송하는 제어기
   
posted by lepoussin
1. 메모리의 종류
  1) RAM(Random Access Memory) : 전원이 인가되는 상태에서만 데이터를 유지
    - SRAM(Static RAM) : 고속, 한 비트당 4~6개의 트랜지스터 사용
    - DRAM(Dynamic RAM) : SRAM 보다 저속, 한 비트당 1개의 트랜지스터 사용, 전원을 Refresh해줘야만 안정되게 데이터 저장
    - SDRAM(Synchronous DRAM) : DRAM을 고속으로 동작하도록 클록을 사용하여 데이터를 읽고 쓸 수 있는 인터페이스를 제공
  2) ROM(Read Only Memory)
    - ROM : 제품 생산 당시 프로그램이나 데이터가 기록되고 이후에는 변경 불가능
    - PROM(Programmable ROM) or OT-PROM (One Time PROM) : 제품 생산 당시에는 아무런 내용이 없으나 한 번만 프로그램이 가능
    - EPROM(Erasable and Programmable ROM) : 자외선 노출을 이용하여 지우고 다시 내용을 저장 가능
  3) 하이브리드 메모리
    - ROM 특성 + RAM 특성 : 전원이 없더라도 보관된 자료를 그대로 유지, 자유롭게 읽기, 지우기, 쓰기 가능
    - EEPROM (Electrically Erasable and Programmable ROM) : 내부적으로 EPROM과 비슷, 내용 삭제시 자외선 노출이 아닌 전기적인 방법으로 처리한다는 점이 다름
    - FLASH
      ⑴ NOR 타입 : 한 비트를 저장하기 위한 셀이 병렬로 연결
        - 데이터를 읽는 속도가 짧음
        - 우수한 안정성
      ⑵ NAND 타입 : 셀이 직렬로 연결
        - NOR에 비해 제조단가가 쌈
        - 대용량이 가능
    - NVRAM(Nonvolatile RAM) : SRAM + 배터리, 전원이 없는 상태에서는 배터리에 의해 데이터 저장

2. 메모리 시스템
  1) 캐시(Cache) : 프로세서에 근접하여 있는 고속의 메모리 장치
    - 프로세서에서 읽기 요청이 있을 때 최대한 빨리 명령이나 데이터를 전달해 주기 위한 고속 메모리 장치
    - 메인 메모리 액세스 감소, 프로세서에 의한 버스 사용량 감소
    ※ cache hit 비율 : 캐시메모리 내에 요구하는 명령이나 데이터가 있을 확률
    ※ cache miss : 프로세스가 요청한 명령이나 데이터가 캐시에 없을 때, 캐시 제어기가 메인 메모리에서 데이터를 읽어와 캐시의 업데이트와 함께 프로세서에 요구한 명령이나 데이터를 전달하는 것(한 번에 여러 워드의 내용을 같이 읽어옴)
    ※ 라인 사이즈(line size) : 한 번에 읽어오는 명령이나 데이터의 크기
    ※ 라인 필(line fill) : 라인 사이즈만큼 내용을 읽어 캐시에 저장하는 것
  2) MMU(Memory Management Unit)
    - 어드레스 변환 기능(가상 주소(Virtual Address) → 물리 주소(Physical Address)), 메모리 보호 기능
    ① 구동된 주소 정보가 메모리 장치로의 접근이 허용되는지를 검사
    ② 접근이 허용되면 물리 주소로 변환하여 메모리 제어기로 제어 정보와 함께 전달
  3) 메모리 제어기(Memory Controller)
    - 입력되는 주소 정보에 따라 어떤 메모리 장치를 액세스할 것인지를 결정(Address Decode)하고 각각의 메모리 장치의 특징에 따라 제어신호를 구동
    - 데이터 버스 : 프로세스와 메모리 간의 데이터 전송을 위한 선
    - 어드레스 버스 : 어떤 메모리를 대상으로 읽기 쓰기를 하는가를 나타내는 선, 프로세스 → 메모리로 일방통행
      ex) 2^10(1024) = 1KB, 어드레싱(주소의 각 영역을 구분하는 것)을 제대로 하기 위해서는 모두 10개의 신호선이 필요
    - 메모리칩 선택 신호 : CE(Chip Enable) 또는 CS(Chip Select) 신호
posted by lepoussin