본문 바로가기
반응형

시스템 반도체48

Arm Private Timer ( zynq 7000 board, Load 레지스터, counter 레지스터, status 레지스터, control 레지스터 ) Timer는 어떻게 작동할까? 타이머는 시간을 설정하고 설정한 시간이 끝나면 어떤 이벤트가 발생하는게 기능적인 동작이다. 아래 Zynq-7000의 내부를 살펴보면, Timer가 여러 개가 있다. 이 중에서 Private timer에 대해서 더 알아보자 Private Timer 4개의 레지스터가 존재하는데 하나씩 보자 1. Load Register - 간단히 말하면 사용자가 설정한 시간을 저장하는 레지스터다. 길이는 32bit다. 2. Counter Register - 마찬가지로 32bit인데 숫자를 세는 레지스터다. 위에 Load 레지스터와 어떻게 연결돼 있는지 보면, str r2, [r3] 동작을 수행했다고 하자. 이때 r3의 주소가 Load 레지스터고 r2에는 1000이 저장돼 있다고 하면, load.. 2022. 8. 10.
Arm calling convention ( 레지스터 사용, caller, callee, AAPCS ) caller와 callee가 있다. 직역하면 caller는 호출한 놈이고, callee는 호출당한 놈이다. 조금 다르게 보면 caller는 main구문이고, callee는 호출 함수다. 그렇다면 main에서 레지스터를 사용하고 있을 텐데 callee 즉, 함수에서는 어떤 레지스터를 사용해야 할까?? Arm에서는 지정 레지스터만 사용하게 했다. 이게 AAPCS ( Procedure Call Standard for ARM Architecture )이다. Arm CPU에는 16개의 레지스터가 있는데 이때 callee는 r0~r4 레지스터만 사용할 수 있다. 사용할 수 있다는 말은 넘겨줄 수 있는 인자를 4개의 레지스터에게만 보낼 수 있다. 그럼 4개가 넘어가면 어떻게 될까?? 이때부터는 stack을 사용한다... 2022. 8. 2.
설계한 RISC-V CPU에서 연산자를 추가하는 접근법 1. 먼저 eclipse에서 code의 Dump file을 확인한다. 하면 아래와 같은 코드들로 이루어져 있다. 32bit라 가정하면, Hex를 2진수로 분해한다. 58: 3ff7c793 xori a5,a5,1023 80: fee7f4e3 bgeu a5,a4,68 2022. 7. 1.
Arm TrustZone ( 신뢰공간, TEE, monitor, banked register, memory ) TrustZone CPU 안에 보안에 있어서 신뢰할 수 있는 환경 ( TEE, Trusted Execution Environment )을 만들어야 하는데 벤더 회사마다 명칭을 다르게 하지만 Arm은 그 환경을 TrustZone이라고 부른다. 2개의 World로 구분해 놨는데. 하나는 Normal World ( non-Secure World ), 다른 하나는 Secure World로 구분했다. 단어에서 알 수 있듯이 Normal World에서는 일반적인 애플리케이션을 돌리고 은행 앱이나 정보보안이 필요한 서비스의 경우에는 Secure World에서 애플리케이션을 실행한다. 애플리케이션을 돌리기 위해선 운영체제도 필요하다는 걸 알 수 있다. 리눅스와 같이 오픈 소스 코드는 보안에 취약하니 보안에 강한 운영체.. 2022. 6. 24.
Arm GIC, SGI ( interrupt controller, 인터럽트 컨트롤러 ) 많은 I/O device로부터 발생하는데, 이렇게 많은 장치들이 interrupt를 발생시키는데 cpu는 제한된 interrupt선을 가지고 있다. 어떻게 선택할 수 있을까?? interrupt controller (APIC, PIC, INTC, GIC..)라는 하드웨어를 가지고 구현한다. interrupt controller가 필요한 이유는 다음과 같다. 모든 I/O device는 상태 레지스터를 가지고 있는데. ISR이 발생하면 cpu는 device의 state 레지스터 값을 읽어온 후에 동직 하는데 만약 device가 엄청나게 많다면 latency가 엄청나게 오래 걸릴 것이다. 또한 여러 개의 device가 동시에 interrupt를 발생시키면 어떻게 할까?? 누구가 먼저 실행돼야 하나, 이런 문제.. 2022. 5. 31.