서강대학교 23년도 마이크로프로세서응용실험 3주차 Lab03 결과레포트 (A+자료)
본 내용은
"
서강대학교 23년도 마이크로프로세서응용실험 3주차 Lab03 결과레포트 (A+자료)
"
의 원문 자료에서 일부 인용된 것입니다.
2024.09.04
문서 내 토픽
  • 1. 메모리 소자
    마이크로 컨트롤러는 메모리 소자를 내장하고 있다. 메모리 소자는 크게 ROM과 RAM으로 구분되며, 이 둘의 차이는 volatile 여부로 나뉜다. RAM에서는 CPU가 데이터를 읽거나, 쓰는 동작을 수행할 수 있다.
  • 2. SRAM 구조 및 동작
    SRAM의 경우 메모리 소자의 한 종류이다. 메모리의 동작을 위해서는 핀들을 통한 신호전달이 필요하다. /CS는 특정 메모리 소자를 선택하는 신호로, LOW일 때 메모리가 선택되어 read/write가 가능해진다. /WE는 메모리에 데이터를 쓰고자 할 때 LOW가 되어야 한다. /OE는 메모리로부터 데이터를 읽기위해 LOW가 되어야 한다.
  • 3. 메모리 시스템
    메모리는 특정 단위 bit수를 갖는 데이터를 저장하는 연속적인 배열이다. 이때 데이터 단위(주로 byte)는 주소를 가지게 된다. CPU가 가지는 주소신호의 수가 32-bit라면, address space는 232개가 되고, 이는 4K개의 Byte에게 주소를 할당한다.
  • 4. Endian mode
    32-bit의 word data는 메모리에 byte 단위로 저장된다. 이 때 데이터가 LSB가 낮은 address에 저장되느냐, 높은 address에 저장되느냐에 따라 little-endian mode, big-endian mode로 나뉘게 된다. halfword나 byte 단위로 데이터를 전송할 때, 프로세서와 주변 장치 간의 endian mode가 동일해야만 원하는 데이터를 온전히 전달할 수 있다.
  • 5. Unaligned transfer
    aligned 데이터는 데이터의 시작 주소가 데이터의 크기(몇 byte인지)의 정수배일 때이다. 따라서 data bus가 32-bit일 때, aligned word data는 한번의 bus cycle로 access가능하다. 반면 unaligned 데이터의 경우, 여러 번의 aligned 데이터 전달 동작으로 전환되어, cycle 소모가 증가하고, program 수행 시간이 길어지게 된다.
  • 6. Bit-banding
    bit-banding은 하나의 data-bit에 대한 read/write가 가능하도록 하는 것이다. memory map 상에서 SRAM의 경우, 0x20000000~0x200FFFFF의 1MB 공간이 bit-band region으로 지정되어 있다. 이 영역의 bit들은 0x22000000~0x23FFFFFC까지의 bit-band alias 영역의 주소를 이용해 개별적으로 access 가능하게 된다.
  • 7. 데이터 전송 및 어드레싱 모드
    한 레지스터의 데이터를 다른 레지스터로 이동시키고 싶을 때에는, "MOV r8, r3"와 같은 명령을 사용할 수 있다. 메모리와 레지스터 간의 데이터 이동은 LDR(load), STR(store)의 명령어가 있다. 이 때, "LDR r9, [r12, r8, LSL #2]" 같은 방식으로 operand가 결정된다.
  • 8. Instructions & Directives
    실험에 쓰이는 instruction들과 directive들에 대해 정리해보자. LDR과 STR등의 데이터 전달 instruction은 이론2-7에서와 같은 방식으로 사용된다. "area" directive는 새로운 code나 data섹션을 어셈블러에게 지시하는 역할을 한다. "entry" directive는 프로그램에 entry point를 지정한다. "adr", "dcd", "dcw", "dcb" 등의 directive들도 사용되었다.
  • 9. 실험 과정
    STEP 1 ~ STEP 6 에서는 그림 1-2의 program3.3을 작성 및 build한 후, MDK가 제공하는 simulator를 이용해 simulation할 수 있게끔 실험환경을 마련했다. STEP 7 ~ STEP 16에서는 실험 과정을 통해 메모리에 데이터와 명령어가 저장되는 방식, 데이터 전송 명령어의 동작 등을 관찰하였다. STEP 17 ~ STEP 32에서는 추가적인 실험을 통해 프로그램의 동작을 더 자세히 분석하였다.
Easy AI와 토픽 톺아보기
  • 1. 메모리 소자
    메모리 소자는 컴퓨터 시스템의 핵심 구성 요소로, 데이터와 명령어를 저장하고 처리하는 역할을 합니다. 메모리 소자의 종류와 특성에 대한 이해는 컴퓨터 시스템 설계와 성능 향상에 매우 중요합니다. 메모리 소자는 휘발성 메모리와 비휘발성 메모리로 구분되며, 각각의 장단점이 있습니다. 휘발성 메모리는 전원이 공급되는 동안에만 데이터를 유지할 수 있지만 빠른 속도와 높은 집적도를 가지고 있습니다. 반면 비휘발성 메모리는 전원이 공급되지 않아도 데이터를 유지할 수 있지만 상대적으로 느린 속도와 낮은 집적도를 가지고 있습니다. 메모리 소자의 발전은 컴퓨터 시스템의 성능 향상과 새로운 응용 분야 개발에 큰 영향을 미치고 있습니다.
  • 2. SRAM 구조 및 동작
    SRAM(Static Random Access Memory)은 휘발성 메모리의 한 종류로, 데이터를 저장하고 읽고 쓰는 데 사용됩니다. SRAM의 구조는 플립플롭 회로로 구성되어 있으며, 이를 통해 데이터를 안정적으로 유지할 수 있습니다. SRAM은 동기식 또는 비동기식으로 동작할 수 있으며, 동기식 SRAM은 클록 신호에 동기화되어 동작하므로 더 빠른 속도를 가지고 있습니다. SRAM의 동작은 읽기, 쓰기, 대기 상태로 구분되며, 각 상태에서 SRAM의 내부 회로가 어떻게 동작하는지 이해하는 것이 중요합니다. SRAM은 캐시 메모리, 레지스터 파일 등 다양한 용도로 사용되며, 메모리 시스템 설계에 있어 핵심적인 역할을 합니다.
  • 3. 메모리 시스템
    메모리 시스템은 컴퓨터 시스템의 핵심 구성 요소로, 데이터와 명령어를 저장하고 처리하는 역할을 합니다. 메모리 시스템은 다양한 종류의 메모리 소자(SRAM, DRAM, 플래시 메모리 등)로 구성되며, 이들 간의 계층 구조와 상호 작용이 중요합니다. 메모리 시스템의 성능은 메모리 접근 시간, 대역폭, 전력 소비 등 다양한 요소에 의해 결정됩니다. 캐시 메모리, 메인 메모리, 보조 메모리 등 계층 구조를 통해 메모리 시스템의 성능을 향상시킬 수 있습니다. 또한 메모리 관리 기법, 메모리 인터페이스, 메모리 버스 등 메모리 시스템의 다양한 구성 요소에 대한 이해가 필요합니다. 메모리 시스템의 설계와 최적화는 컴퓨터 시스템의 전반적인 성능에 큰 영향을 미치므로 중요한 연구 주제라고 할 수 있습니다.
  • 4. Endian mode
    Endian mode는 메모리에 데이터를 저장하고 읽는 방식을 결정하는 중요한 개념입니다. Big-endian과 Little-endian은 메모리에서 데이터의 최상위 바이트와 최하위 바이트가 저장되는 순서가 다른 방식입니다. Big-endian은 최상위 바이트가 메모리의 낮은 주소에 저장되고, Little-endian은 최하위 바이트가 메모리의 낮은 주소에 저장됩니다. 이러한 차이로 인해 데이터 처리 과정에서 바이트 순서를 고려해야 하며, 특히 네트워크 통신이나 파일 입출력 등에서 endian mode 변환이 필요할 수 있습니다. 대부분의 인텔 계열 프로세서는 Little-endian 방식을 사용하지만, 모토롤라 계열 프로세서는 Big-endian 방식을 사용합니다. 따라서 시스템 설계 시 endian mode에 대한 이해와 고려가 필요합니다.
  • 5. Unaligned transfer
    Unaligned transfer는 메모리 주소가 데이터 크기의 배수가 아닌 경우에 발생하는 데이터 전송 방식입니다. 대부분의 프로세서는 메모리 접근 시 데이터 크기의 배수 주소에서 접근하는 것을 선호하지만, 프로그래밍 과정에서 unaligned 메모리 접근이 발생할 수 있습니다. 이 경우 프로세서는 여러 개의 메모리 접근 cycle을 수행해야 하므로 성능 저하가 발생할 수 있습니다. 따라서 unaligned transfer를 최소화하기 위해서는 데이터 구조와 메모리 접근 패턴을 최적화하는 것이 중요합니다. 또한 프로세서에 따라 unaligned transfer를 지원하는 방식이 다르므로, 시스템 설계 시 이를 고려해야 합니다. 전반적으로 unaligned transfer는 메모리 시스템 설계와 프로그래밍에 있어 중요한 고려 사항이라고 할 수 있습니다.
  • 6. Bit-banding
    Bit-banding은 메모리 접근 시 특정 비트만을 선택적으로 읽거나 쓸 수 있는 기능입니다. 이를 통해 프로그래밍 코드를 단순화하고 성능을 향상시킬 수 있습니다. 예를 들어, 특정 메모리 위치의 특정 비트를 설정하거나 확인하는 작업을 수행할 때 bit-banding을 사용하면 별도의 마스킹 연산 없이 직접 접근할 수 있습니다. 이는 코드의 가독성과 효율성을 높일 수 있습니다. 또한 bit-banding은 메모리 매핑 기반의 입출력 제어에도 유용하게 사용될 수 있습니다. 일부 마이크로컨트롤러에서는 bit-banding 기능을 지원하므로, 이를 활용하면 보다 효율적인 시스템 설계가 가능합니다. 따라서 bit-banding은 임베디드 시스템 개발에 있어 중요한 기술 중 하나라고 할 수 있습니다.
  • 7. 데이터 전송 및 어드레싱 모드
    데이터 전송 및 어드레싱 모드는 프로세서와 메모리 간의 데이터 교환 방식을 결정하는 중요한 개념입니다. 대표적인 데이터 전송 모드로는 직접 메모리 접근(DMA), 프로그램 제어 입출력, 메모리 매핑 입출력 등이 있습니다. 각 모드는 데이터 전송 속도, 프로세서 부하, 하드웨어 복잡도 등의 측면에서 장단점이 있습니다. 어드레싱 모드는 메모리 주소 지정 방식을 결정하며, 직접 주소 지정, 간접 주소 지정, 상대 주소 지정 등이 있습니다. 이러한 데이터 전송 및 어드레싱 모드는 시스템 성능과 효율성에 큰 영향을 미치므로, 시스템 설계 시 적절한 모드를 선택하는 것이 중요합니다. 또한 프로세서와 메모리 간의 인터페이스 설계 및 최적화에도 이러한 개념들이 활용됩니다.
  • 8. Instructions & Directives
    Instructions와 Directives는 프로세서의 동작을 제어하는 핵심 요소입니다. Instructions는 프로세서가 실행할 수 있는 기본적인 연산 명령어들이며, Directives는 컴파일러나 어셈블러에게 특정한 동작을 지시하는 명령어들입니다. Instructions는 데이터 처리, 제어 흐름, 메모리 접근 등 다양한 기능을 수행하며, 프로세서 구조와 밀접하게 연관됩니다. Directives는 코드 생성, 메모리 할당, 링커 옵션 설정 등 컴파일 및 어셈블리 과정에 영향을 미칩니다. Instructions와 Directives에 대한 이해는 프로세서 아키텍처와 시스템 소프트웨어 개발에 필수적입니다. 또한 새로운 Instructions와 Directives의 도입은 프로세서 성능 향상과 새로운 기능 구현에 중요한 역할을 합니다.
  • 9. 실험 과정
    실험 과정은 이론적 지식을 실제로 검증하고 심화하는 중요한 단계입니다. 실험을 통해 메모리 소자, SRAM 구조, 메모리 시스템, Endian mode, Unaligned transfer, Bit-banding, 데이터 전송 및 어드레싱 모드, Instructions & Directives 등의 개념을 실제로 구현하고 확인할 수 있습니다. 실험 과정에서는 실험 설계, 데이터 수집, 분석, 결과 해석 등의 단계를 거치게 됩니다. 이를 통해 이론적 지식을 심화하고 실제 시스템 구현에 필요한 기술을 습득할 수 있습니다. 또한 실험 과정에서 발생하는 문제점을 해결하는 과정은 문제 해결 능력 향상에도 도움이 됩니다. 따라서 실험 과정은 이론과 실제를 연결하는 중요한 학습 단계라고 할 수 있습니다.