Arm 구조 및 제어 - 1

2022. 5. 29. 18:55

예전에 공부하며 필기하던 내용..(책 내용 전부는 아니고 일부분만 정리 됨)

 

 

1. 포팅(porting)
 - os를 기기(h/w)에 알맞게 맞추어 수정하는 것

2. overwrite
 - 덮어쓰기, 프로그래머 관점에서는 write(지우고쓰기)하는 것은 시간이 너무 오래걸려 overwrite를 write라고 부른다.
 - 동작관점(runtime)에서는 데이터 동작속도와 명령어 동작소도가 다를경우 문제가 된다.

3. 저장장치
 - 휘발성(volatile): sram, sdram, dram -> overwrite가능, I/D로 사용가능
 - 비휘발성
    EEROM: 구형, rom과 같다
    Flash: nand - 저렴, page단위의 rw, block단위의 erase /nor - 비쌈, 동작중 read가능 write불가
 => 비휘발성은 overwrite가 안된다.
 => ssd는 nand계열, hdd(섹터단위 rw)는 nand와 유사계열이다.

4. 코어(cpu)입장에서 명령어(I)는 읽기만(RO) 하고, 데이터(D)는 읽고 쓸 수 있다.(RW)
 - 따라서 I는 ram과 nor, D는 ram에서만 사용가능하다(nand는 둥다 동작불가, 대신 page와 block단위로 동작되기 때문에 4g가 넘어도 자유롭게 사용이 가능하다)

5. nand는 hw의 수명문제 때문에 sw설계시 block을 골고루 쓰도록 해야한다.
 - 이러한 수명문제를 해결하기 위해 내부구조(rom제어용 cpu, i-rom, sram, nand)와 sw(FTL, 플래시 트랜스 레이어, 라고 부른다)를 묶어서 하나의 hw로 판매하는데, 이를 emmc라고 한다(상위호환이 ufs, 하위호환이 sd이다.)

6. 캐시
 - 종류: 캐시(I캐시, D캐시), TCM(D캐시)

7. 캐시 동작방식
 - read
    core가 데이터 확인(cache에 존재시 hit, 없을시 miss)
    데이터가 없을 경우 데이터를 캐쉬에 업뎃하는데, 이를 line fill이라한다.
    line의 크기에 따라 업뎃한다(process메뉴얼 참조)
    ex: line크기=2word=32bit*2 -> 64bit씩 업데이트된다
     - (1word=프로세서 연산크기, ex: 32bit프로세서의 1word=32bit)
    linefill은 캐시 컨트롤러가 관리한다

 - write
    rw에서 주의할 점은 일관성유지(메모리와 캐시간 내용의 일관성)를 위해 r속도와 w속도가 같아야한다.
    방식1: write through
     - 코어가 r과 w 둘다하는 방식
     - 장: 일관성이 유지된다. 단: 캐시를 사용할 이유가 없다(ram접근은 느리니까)
    방식2: write back
     - 코어는 캐쉬와 write buffer(fifo방식)에만 쓰고 buffer에서 메모리에 내용을 차례대로 write하는 방식
     - 장: 속도를 유지할 수 있다. 단: 일관성 유지가 힘들고 위험성이 커진다.

8. TCM(tightly coupled memory)
 - 개발자가 sw적으로 데이터를 캐시에 넣고 강제적으로 유지시킬 수 있는 캐시

9. 
I/O장치는 memory map의 일부 번지를 사용하여 활용한다.
I/O장치의 영역은 non-cacheable로 해야하며(적대적 일관성 유지)
I/O장치의 변수는 volatile type으로 설정한다(휘발성=매법불러옴=일관성유지)
I/O레지스터는 주소를 가지고, I/O제어를 설정하고 변화를 확인하는데 사용한다.

10.
 - 메모리에 입력되어 있는 데이터들을 보호하고 캐쉬의 사용여부를 결정하는 hw(=능동적으로 시스템 자원을 보호하는 hw)를 MPU, MMU라고 부른다.
 - MPU(①~③)와 MMU(①~⑤)의 특징
    ① 메모리를 일정 크기의 영역(region)으로 나누어 묶음(partition)
    ② 각영역별로 cacheable/bufferable 특성부여
     - ex) 1-1:write back, 1-0:write through, 0-0:I/O(io니까 둘다 사용x), 0-1: 불가능한 경우(버퍼는 캐시에 포함되어 있다.)
    ③ 영역별로 접근권한 설정(보호와 비보호)
     - rw, ro, no-acess
    ④ dynamic한 메모리 관리
     - 프로그램이 동작 중일때도 접근권한, cacheable/bufferable설정이 가능하다
    ⑤ virtual address(가상주소) 지원

 => power pc에서는 cpu가 이역할(캐쉬제어)을 지원하는 경우가 있다

+ Recent posts