IT/리눅스마스터1급

cpsr

알콩달콩아빠 2022. 5. 4. 19:10
728x90
반응형
 3.1) 소개

 우리 ARM은 32 비트 데이터 버스와 32 비트 주소 버스가 있습니다.  데이터 유형
 단어 넷을 정렬해야합니다있는 프로세서 지원은 단어 (32 비트)입니다
 바이트 경계.  지침은 정확히 하나의 단어, 데이터 작업 아르
 (예 : ADD)는 단어 수량에 수행됩니다.  로드 및 매장 운영
 단어를 전송할 수 있습니다.

 우리 ARM은 작동 여섯 모드를 지원합니다 :

 (1) 사용자 모드 (USR) : 정상적인 프로그램 실행 상태
 (2) FIQ 모드 (fiq) : 데이터 전송 또는 채널 프로세스를 지원하도록 설계
 (3) IRQ 모드 (IRQ)는 : 범용 인터럽트 처리에 사용
 (4) 감독자 모드 (SVC) : 운영 체제에 보호 모드
 (5) 중지 모드 (ABT)는 : 데이터 나 명령어 프리 페치 중단 한 후 입력
 (6) 정의되지 않은 모드 (숙녀)는 : 정의되지 않은 명령이 실행되면 입력

 모드 변경은 소프트웨어 제어하에 만들어 질 수있다 또는이 약 가져 수 있습니다
 외부 인터럽트 나 예외 처리.  대부분의 응용 프로그램됩니다
 사용자 모드에서 실행합니다.  특권 모드로 알려진 다른 모드는 것입니다
 서비스 중단 또는 예외에 입력하거나 액세스 할 보호
 자원.


 3.2) 레지스터

 프로세서 31 일반 32 비트 구성 37 레지스터 총을 가지고
 레지스터와 6 상태 레지스터.  한 번 16 일반 레지스터 (R0에서
 R15에)와 하나 또는 두 개의 상태 레지스터는 프로그래머가 볼 수 있습니다. 
 눈에 보이는 레지스터는 프로세서 모드와 다른 레지스터 (에 따라 달라집니다
 줄 지어 늘어 놓다 레지스터)는 IRQ, FIQ, 책임자, 중지를 지원하려면 전환 아르
 그리고 정의되지 않은 모드 처리.  등록 은행 조직에 표시됩니다
 그림 (3-1).  줄 지어 늘어 놓다 레지스터는 그림 음영 처리되어 있습니다.
 모든 모드에서 16 레지스터, R15에 R0는 직접 액세스 할 수 있습니다.  모든
 R15을 제외한 레지스터는 범용이며 또는 데이터를 보유하는 데 사용 할 수 있습니다
 주소 값.  등록 R15은 프로그램 카운터 (PC)를 보유하고 있습니다.  R15는 경우
 읽기, 비트 [1시] 제로하고 비트 [31:2] PC가 포함되어 있습니다.  열일곱번째
 등록 (CPSR - 현재 프로그램 상태 레지스터)도 액세스 할 수 있습니다.
 이 조건 코드 플래그와 전류 모드 비트를 포함하고있을 수 있습니다
 PC의 확장으로 생각.
 R14은 서브 루틴 링크 레지스터로 사용 R15의 사본 때를받습니다있다
 지점 및 링크 명령이 실행됩니다.  그것은 것으로 간주 될 수 있습니다 일반
 목적은 다른 모든 시간에 등록합니다.  R14_svc, R14_irq, R14_fiq, R14_abt 및
 R14_und는 R15의 반환 값을 보유하는 유사 사용하는 경우 인터럽트
 및 예외가 발생할 때 또는 지점 및 링크 안내가 실행됩니다
 인터럽트 나 예외 루틴 내에 있습니다.

                      그림 (3-1) : 등록 기관


 FIQ 모드는 R8-14 (R8_fiq-R14_fiq)에 매핑 칠 줄 지어 늘어 놓다 레지스터가 있습니다.  많은
 FIQ 프로그램은 모든 레지스터를 저장 할 필요가 없습니다.  사용자 모드 IRQ 모드
 관리자 모드, 중지 모드와 정의되지 않은 모드는 각 두 줄 지어 늘어 놓다가
 R13 및 R14에 매핑 등록합니다.  두 줄 지어 늘어 놓다 레지스터는이 모드에게 허용
 각 객실에는 전용 스택 포인터 및 링크 레지스터를 가지고 있습니다.  과장님, IRQ,
 중지하고 두 줄 지어 늘어 놓다 이상을 필요로 정의되지 않은 모드 프로그램
 레지스터는 (R0에 호출자의 레지스터의 일부 또는 전부를 저장 예상됩니다
 각각의 스택에 R12).  그런 다음 이러한 레지스터를 사용하여 무료입니다
 사람들이 호출자에게 돌아 가기 전에 복원됩니다.  또한이
 또한 다섯 SPSRs은 (프로그램 상태 레지스터를 저장)로로드됩니다됩니다
 예외가 발생 CPSR.  각 권한에 대해 하나의 SPSR이 있습니다
 모드를 사용합니다.

          그림 (3-2) : 프로그램 상태 레지스터의 형식 (PSRs)


 프로그램 상태 레지스터의 형식은 그림 (3-2)에 표시됩니다.  N,
 Z, C 및 V 비트는 조건 코드 플래그입니다.  의 조건 코드 플래그
 CPSR은 산술과의 논리적 작업의 결과로 변경 될 수 있습니다
 프로세서와는 결정하기 위해 모든 지시에 의해 테스트 할 수있는 경우
 명령 실행하는 것입니다.
 I 및 F 비트는 인터럽트가 비트를 해제합니다.  I 비트가 IRQ를 사용할 수 없게
 그 때이 설정하고 F 비트 해제되어 인터럽트는 인터럽트를 FIQ
 설정할 수 있습니다.  M0, M1, M2, M3와 M4 비트 (M [4시])있는 모드 비트, 이러한
 프로세서가 작동하는 모드를 결정합니다.  의 해석
 모드 비트는 표 (3-1)에 표시됩니다.  모드의 모든 조합
 비트는 유효한 프로세서 모드를 정의합니다.  만 명시 적으로한다 설명
 사용될 수 없습니다.
 PSR의 맨 아래에 28 비트 (I를 통합, F 및 M는 [4시]) 알려져있다
 통칭 제어 비트 있습니다.  때 제어 비트가 변경됩니다
 예외가 발생하시면 소프트웨어로 조작 할 수있는 경우
 프로세서는 특권 모드에 있습니다.  PSRs에서 사용하지 않는 비트는 예약되어 있고
 깃발 또는 제어 비트를 변경할 때의 상태를 보존한다.
 프로그램은 예약 된 비트 때부터 특정 값에 의존하지 않는다
 그들은 미래에 하나 또는 제로로 읽을 수 있으므로, PSR 상태를 확인
 프로세서를 지원합니다.

M [4시] 모드 액세스 레지스터 세트

10,000 사용자 PC, R14 R0 .. CPSR
10,001 FIQ PC, R14_fiq .. R8_fiq, R7 R0 .. CPSR, SPSR_fiq
10,010 IRQ PC, R14_irq .. R13_irq, R12 R0 .. CPSR, SPSR_irq
10,011 감독자 PC, R14_svc .. R8_svc, R7 R0 .. CPSR, SPSR_svc
10,111 유산하다 PC, R14_abt .. R8_abt, R7 R0 .. CPSR, SPSR_abt
11,011 정의되지 않음 PC, R14_und .. R8_und, R7 R0 .. CPSR, SPSR_und
                          표 (3-1) : 모드 비트


 3.3) 예외

 프로그램의 정상적인 흐름에 대한 필요가있을 때마다 예외가 발생
 분류 할 실행이되도록 (예를 들어) 프로세서는 우회 할 수 있습니다
 주변에서 인터럽트를 처리 할 수​​ 있습니다.  직전에 프로세서 상태
 예외를 처리하는 것은 매우 보존해야합니다 원래 프로그램 할 수있는 그
 예외 루틴이 완료되면 재개 할.  많은 예외 수도
 같은 시간에 발생합니다.
 우리 ARM은 줄 지어 늘어 놓다 레지스터의 이용은 저장하여 예외를 처리
 상태입니다.  오래된 PC 및 CPSR 내용은 해당 R14에 복사되고
 SPSR와 CPSR 비트의 PC 및 모드 비트는 해당 값으로 강제 아르
 예외에 따라 달라집니다.  에 필요한 위치 플래그가 설정되어 해제 인터럽트
 예외 달리 관리가 nestings를 방지합니다.  의 재 경우
 참가자 인터럽트 핸들러, R14 및 SPSR은에 스택에 저장해야합니다
 인터럽트를 다시 활성화하기 전에 메인 메모리, SPSR을 전달하는
 와 스택의 등록은 전체 32 비트를 전송하는 것이 중요합니다
 가치뿐 아니라 깃발 또는 제어 분야.  때 여러 예외
 동시에 발생하는, 고정 우선 순위 순서를 결정하는의 사람들
 처리됩니다.  우선은이 장의 뒷부분에 나열되어 있습니다.


 3.3.1) FIQ

 FIQ (고속 인터럽트 요청) 예외는 외부에 의해 생성되는
 nFIQ 입력 LOW을하고 있더라고.  이 입력은 비동기 전환을받을 수
 가에 영향을 줄 수 있습니다 전에하며 동기화에 대해 하나의 클럭 사이클에 의해 지연되는
 프로세서 실행 흐름.  그것은 또는 데이터 전송을 지원하기 위해 설계되었습니다
 의 필요성을 제거 할 채널 과정 및이 충분한 개인 레지스터
 등록은 (따라서의 오버 헤드를 최소화 등 응용 프로그램에서 저장하는
 컨텍스트 스위칭).  FIQ 예외는 F 플래그를 설정하여 비활성화 할 수 있습니다
 CPSR에 (하지만이 사용자 모드에서 불가능합니다.)  만약 F
 플래그가 분명하다, 우리의 ARM은 FIQ의 출력에 LOW 레벨 있는지 확인
 각 명령의 끝에서 동기화.
 FIQ이 감지되면, ARM은 다음을 수행합니다 :

 (1)에서 플러스 4 실행하려면 다음 명령어의 주소를 저장
    R14_fiq, SPSR_fiq의 저장을 CPSR
 CPSR (2) 미군 M [4시] = 10,001 (FIQ 모드) 및 설정 F와 비트
 (3) PC는 주소 0x1C에서 다음 명령을 가져 수석 고문

 복원됩니다 FIQ, 사용 잠수정 PC, R14_fiq, # 4에서 일반적으로 돌아가려면
 PC (R14에서)와 CPSR (SPSR_fiq에서)와 다시 실행의 두
 중단 코드입니다.


 3.3.2) IRQ

 IRQ (인터럽트 요청) 예외가 LOW로 인한 일반 인터럽트입니다
 nIRQ 입력에 수준입니다.  FIQ보다 낮은 우선 순위로하고, 밖을 마스크합니다
 FIQ 순서를 입력 할 때.  그 효과는 언제든지에 의해 마스크 할 수 있습니다
 이 사용자의 불가능 I의 CPSR의 비트 (하지만 메모를 설정
 모드).  나는 지연이 명확하면, 우리의 ARM는 출력에 LOW 레벨 있는지 확인
 각 명령의 끝에서 IRQ 동기의.  IRQ가있는 경우
 감지, 우리의 ARM은 다음을 수행합니다 :

    (1)에서 플러스 4 실행하려면 다음 명령어의 주소를 저장
    R14_irq, SPSR_irq의 저장을 CPSR
 (2) 미군 M [4시] = 10,010 (IRQ 모드) 및 설정 제가 비트 CPSR의
 (3) PC는 주소 0x18에서 다음 명령을 가져 수석 고문

 IRQ, 사용 잠수정 PC, R14_irq, # 4에서 일반적으로 돌아가려면 모두 복원됩니다
 중단 코드의 PC와 CPSR 및 다시 실행.


 3.3.3) 중지

 중지는 외부 중지 입력에 신호를 할 수 있습니다.  중지는을 나타냅니다
 현재 메모리 액세스를 완료 할 수 없습니다.  예를 들어, 가상의
 메모리 시스템은 현재 주소에 해당하는 데이터되었을 수 있습니다
 디스크에 메모리가 부족 이동하고, 상당한 프로세서 활동이 될 수 있습니다
 액세스가 수행 할 수 있습니다 전에 데이터를 복구하는 데 필요한
 성공적으로.  우리 ARM은 메모리 액세스 사이클 동안 중지를 확인합니다.  언제
 성공적으로 중단 우리 ARM 두 가지 방법 중 하나를 응답합니다 :

    (1) 취소는 명령어 프리 페치 (미리 가져 오기 중지) 동안 발생하는 경우
     프리 페치 된 명령어가 잘못했지만 취소 예외로 표시되어
     즉시 발생하지 않습니다.  명령이 실행되지 않은 경우에
     이 파이프 라인에있는 동안 촬영 된 지점의 결과로 예를 들어,
     더 중단이 발생하지 않습니다.  명령은 도달하면 중지가 자리를 취할 것입니다
     파이프 라인의 머리입니다는 약 실행될 수 있습니다.

    (2) 취소는 데이터 액세스 (데이터 중지) 동안 발생한 경우
     작업을 지시 유형에 따라 달라집니다.
     () 단일 데이터 전송 지침 (LDR, STR) 다시 작성합니다
     수정 기본 레지스터와 중지 처리기는이 인식하고 있어야합니다.
      (B) 블록 데이터 전송 방법 (LDM, STM)가 완료되었습니다.  모든 등록
     중지를 표시 한 후 덮어 쓰기가 방지되는데,이에 의미
     R15은 (이 항상 전송 될 마지막)입니다 특정
     중단 LDM 교육에 보존.

 프리 페치 또는 데이터 중지 중 하나가 발생하면, 우리의 ARM이 수행
 다음 :

 (1) 중단 명령어의 주소를 플러스 4 (프리 페치를위한 저장
    중단) 또는 R14_abt의 8 (데이터 중단을위한), SPSR_abt에서 CPSR을 저장합니다.
 (2) 미군 M [4시] = 10,111 (중지 모드)와 CPSR의 I 비트를 설정합니다.
 (3) PC는 주소 0x0C 중 하나에서 다음 명령을 가져 수석 고문
 (프리 페치 중단) 또는 주소 0x10 (데이터 중단).

 중단 이유를 수정 한 다음 돌아가려면 잠수정 PC, R14_abt을 # 4를 사용
 (프리 페치 중단의 경우) 또는 잠수정 PC, R14_abt, # 8 (데이터 중단의 경우).  이됩니다
 PC와 CPSR을 모두 복원하고 중단 명령을 다시 시도합니다.
 중지 메커니즘은 수요 페이징 가상 메모리 시스템이 될 수 있습니다
 적절한 메모리 관리 소프트웨어를 사용할 수있을 때 실행. 
 프로세서는 임의의 주소를 생성 할 수 있으며, 데이터를 경우에있다
 주소는 MMU가 중지 신호를 사용할 수 없습니다.  프로세서 트랩
 시스템 소프트웨어에있는 중지의 원인을 해결해야합니다를
 데이터를 사용할 요청 및 중단 명령을 다시 시도합니다. 
 응용 프로그램은 사용 가능한 메모리의 양에 대한 지식이 필요 없습니다
 그 않으며이 중지에 의해 영향을 어떤 식 으로든 그 상태입니다.


 3.3.4) 소프트웨어 인터럽트

 소프트웨어 인터럽트 명령 (SWI)는에 들어가기에 사용됩니다
 관리자 모드, 보통 특정 관리자 기능을 요청하십시오.  언제
 SWI가 실행되고, ARM은 다음을 수행합니다 :

 (1) R14_svc에서 SWI 명령어 + 4의 주소를 저장, 저장
    SPSR_svc에서 CPSR
 (2) 미군 M [4시] = 10,011 (감독자 모드) 및 설정 제가 비트 CPSR의
 (3) PC는 주소 0x08에서 다음 명령을 가져 수석 고문

 SWI에서 돌아가려면 MOVS의 PC, R14_svc을 사용합니다.  이 PC를 복원하고합니다
 CPSR 및 SWI 다음 명령으로 돌아갑니다.


 3.3.5) 정의되지 않은 명령어 트랩

 ARM은이 처리 할 수​​있는 명령어를 통해 제공하면 제공
 그 표시 될 수도있는 coprocessors 있습니다.  코 프로세서가 수행 할 수없는 경우
 이 명령은 있지만 그 시간에 바쁜이며, ARM은 될 때까지 기다릴 것입니다
 코 프로세서가 준비 또는 인터럽트가 발생 될 때까지.  노 코 프로세서 수 있다면
 명령을 처리하는 것은 다음 ARM은 정의되지 않은 명령어 트랩이 소요됩니다.
 트랩이 시스템에서 코 프로세서의 소프트웨어 에뮬레이션에 사용할 수 있습니다
 코 프로세서 하드웨어를 가지지 않은, 또는 일반적인 목적을 위해
 교육은 소프트웨어 에뮬레이션으로 확장을 설정할 수 있습니다.

 ARM은 정의되지 않은 명령어 트랩을 소요하는 경우는 다음을 수행합니다 :

 (1) 정의되지 않은 또는 보조 프로세서 명령어 + 4의 주소를 저장
    R14_und에, SPSR_und에서 CPSR을 저장합니다.
 (2) 미군 M [4시] = 11,011 (정의되지 않은 모드) 및 설정 제가 비트 CPSR의
 (3) PC는 주소 0x04에서 다음 명령을 가져 수석 고문

 실패한 명령을 에뮬레이트 한 후이 함정에서 돌아가려면 MOVS를 사용하여
 PC, R14_und.  이 CPSR을 복원하고 지시로 돌아갑니다
 정의되지 않은 명령에 따라.


 3.3.6) 벡터 요약

주소 예외 항목에 모드

0x00000000 재설정 감독자
0x00000004 정의되지 않은 명령어 정의되지 않음
0x00000008 소프트웨어 인터럽트 감독자
0x0000000C 중지 (프리 페치) 유산하다
0x00000010 중지 (데이터) 유산하다
0x00000014 - 보유 - -
0x00000018 IRQ IRQ
0x0000001C FIQ FIQ

표 (3-2) : 벡터 요약 이러한 바이트 주소이며, 일반적으로 분기 명령이 포함됩니다 관련 루틴을 가리키는. FIQ 루틴은 0x1C 이후에 살고 있으며, 따라서 필요성을 피할 수 있습니다 분기 명령 (및 실행 시간)을. 3.3.7) 예외 우선 순위 여러 예외가 동시에 발생, 고정 우선 순위 시스템 그들이 처리되는 순서를 결정합니다 : (1) 재설정 (높은 우선 순위) (2) 데이터 중단 (3) FIQ (4) IRQ (5) 프리 페치 중단 (6) 정의되지 않은 명령, 소프트웨어 인터럽트 (낮은 가격순 우선 순위) 모든 예외가 한 번에 발생할 수 있습니다. 정의되지 않은 명령 및 그들은 각에 대응부터 소프트웨어 인터럽트은 함께 사용할 수 없습니다 특히 (비 중복)은 현재 명령어의 decodings. 데이터 중지는 FIQ와 동시에 발생하고 FIQs이 활성화 된 경우 (CPSR의 F 플래그가 명확 IE), ARM은 데이터 중지를 입력합니다 그런 다음 처리기하고 즉시 FIQ 벡터로 진행합니다. 정상 복귀 FIQ에서 데이터 중단 처리기가 실행을 재개하게됩니다. 배치 FIQ보다 더 높은 우선 순위의 데이터 중단은 보장하기 위해 필요하다고 전송 오류가 감지를 회피하지 않는,이 예외 항목에 대한 시간을 최악의 FIQ 지연 계산에 추가해야합니다. 3.3.8) 인터럽트 대기 시간 이 활성화되어 가정 FIQ에 대한 최악의 지연 시간은,로 구성되어 있습니다 완료 가장 긴 교육을위한 시간, 가장 긴 명령 PC를 포함한 모든 레지스터를)로드 LDM, 플러스 시간입니다 데이터 중단 항목, 플러스 FIQ 항목의 시간. 이 끝에서 시간 ARM은 0x1C에있는 명령이 수행 될 것입니다. 최대 IRQ 지연 계산은 비슷하지만 사실에 대한 허용해야합니다 FIQ는 높은 우선 순위를 가지고 있으며 IRQ 처리에 항목을 지연 수 시간의 임의의 기간 동안 일상. FIQ 또는 IRQ에 대한 최소 지연 시간 요청은 동기화를 통해 취할 수있는 가장 짧은 시간으로 구성 FIQ 항목의 플러스 시간. 3.4) 재설정 nRESET 신호가 LOW 될 때, ARM7은 실행 명령을 포기할 다음 Word 주소를 증가에서 지시를 가져하고 있습니다. nRESET 다시 HIGH 될 때, ARM7은 다음을 수행 : (1) 미군 M [4시] = 10,011 (감독자 모드) 및 설정 I 및 F 비트 CPSR. (2) PC는 주소 0x00에서 다음 명령을 가져 수석 고문

cpsr 레지스터

- ARM 코어는 내부 동작을 모니터링하고 제어하기 위해 사용함.

- 전용 32 비트 레지스터, 레지스터 파일에 위치함.

 

[ 일반적인 프로그램 상태 레지스터(psr) ]

- 8비트씩, 플래그(Flag), 상태(Status), 확장(Extension), 제어(Control)의 네 영역으로 나뉜다.

- 상태, 확장 필드는 미래에 사용할 목적으로 예약( 색칠된 부분 )

- 제어 필드에는 프로세서 모드와 상태, 인터럽트 마스크 비트가 포함되어 있다.

- 플래그 필드에는 상태 플래그가 저장되어 있다.

 

추가로 할당된 비트들.

- J 비트 : Jazelle(8비트 자바 명령어)이 가능한 프로세서에서만 사용 가능함.

- 추후 모니터링이나 새로운 기능 제어를 위해 추가로 비트 할당할거임.

728x90
반응형

'IT > 리눅스마스터1급' 카테고리의 다른 글

udev  (0) 2022.05.04
스트리밍 서버  (0) 2022.05.04
LVM  (0) 2022.05.04
SPI  (0) 2022.05.04
I2C  (0) 2022.05.04