ARM 아키텍처 제품군

ARM architecture family
디자이너
비트32비트, 64비트
소개했다1985; 39년(1985)
설계.RISC
유형등록-등록
분기조건코드, 비교 및 분기
열다.독점적
ARM 64/32비트
소개했다2011; 13년전(2011)
버전ARMv8-R, ARMv8-A, ARMv8.1-A, ARMv8.2-A, ARMv8.3-A, ARMv8.4-A, ARMv8.5-A, ARMv8.6-A, ARMv8.7-A, ARMv8.8-A, ARMv8.9-A, ARMv9.0-A, ARMv9.1-A, ARMv9.2-A, ARMv9.3-A, ARMv9.4-A
인코딩AArch64/A64 및 AArch32/A32는 32비트 명령어를 사용하고, T32(Thumb-2)는 16비트 및 32비트 혼합[1] 명령어를 사용합니다.
엔디안니스Bi(기본값보다 작음)
확장SVE, SVE2, SME, AES, SHA, TME; 필수 사항: 엄지-2, 네온, VFPv4-D16, VFPv4, 오래됨: 자젤
레지스터
범용31 × 64비트 정수 레지스터[1]
부동소수점스칼라 32비트 및 64비트 FP 또는 SIMD FP 또는 정수를 위한 32 × 128비트 레지스터[1]; 또는 암호학
ARM 32비트 (코텍스)
버전ARMv9-R, ARMv9-M, ARMv8-R, ARMv8-M, ARMv7-A, ARMv7-R, ARMv7E-M, ARMv7-M, ARMv6-M
인코딩엄지-2 확장자를 제외한 32비트는 16비트와 32비트가 혼합된 명령어를 사용합니다.
엔디안니스Bi(기본값보다 작음)
확장엄지-2, 네온, 자젤, AES, SHA, DSP, 포화, FPv4-SP, FPv5, 헬륨
레지스터
범용R14(링크 레지스터)를 포함한 15 × 32비트 정수 레지스터(R15(PC)는 포함하지 않음)
부동소수점최대 32 × 64비트 레지스터,[2] SIMD/플로팅 포인트(옵션)
ARM 32비트 (레거시)
버전ARMv6, ARMv5, ARMv4T, ARMv3, ARMv2
인코딩엄지 확장자가 16비트와 32비트 명령어를 혼합하여 사용하는 것을 제외한 32비트.
엔디안니스ARMv3 이상에서 Bi(기본값으로 작음)
확장엄지, 자젤
레지스터
범용R14(링크 레지스터)를 포함한 15 × 32비트 정수 레지스터, R15(PC, 이전 버전의 26비트 주소 지정)
부동소수점없음.

ARM(소문자는 arm으로 표기되며, 이전에는 고급 RISC Machine의 약자였으며, 원래는 Acorn RISC Machine의 약자)은 컴퓨터 프로세서를 위한 ISA(RISC 명령 집합 아키텍처) 제품군입니다. Arm Ltd.는 ISA를 개발하고 다른 회사에 라이센스를 부여하며, 그들은 명령 세트를 사용하는 물리적 장치를 만듭니다. 또한 이러한 ISA를 구현하는 코어를 설계하고 라이센스를 부여합니다.

ARM 프로세서는 저렴한 비용, 낮은 전력 소비 및 낮은 발열로 인해 스마트폰, 노트북, 태블릿 컴퓨터를 포함한 가볍고 휴대 가능한 배터리로 구동되는 장치와 임베디드 시스템에 유용합니다.[3][4][5] 그러나 ARM 프로세서는 2020년부터[6] 2022년까지 세계에서 가장 빠른 슈퍼컴퓨터(후가쿠)를 포함하여 데스크톱서버에도 사용됩니다. ARM은 2,300억 개 이상의 ARM 칩을 생산하고 [7][8][9]있으며, 2022년 현재 가장 널리 사용되는 명령 집합 아키텍처 제품군입니다.[10][4][11][12][13]

ARM 디자인은 여러 세대에 걸쳐 존재해 왔습니다. 원래 ARM1은 32비트 내부 구조를 사용했지만 26비트 어드레스 공간이 있어 64MB의 메인 메모리로 제한되었습니다. 이 제한은 32비트 주소 공간이 있는 ARMv3 시리즈에서 제거되었으며, ARMv7까지의 추가 세대는 32비트로 유지되었습니다. 2011년에 출시된 ARMv8-A 아키텍처는 새로운 32비트 고정 길이 명령어 세트를 통해 64비트 주소 공간과 64비트 산술을 지원합니다.[14] 암 주식회사 또한 다른 규칙을 위한 일련의 추가 명령어 세트를 출시했습니다. "툼" 확장은 코드 밀도를 향상시키기 위해 32비트와 16비트 명령어를 모두 추가하는 반면, 자젤은 자바 바이트코드를 직접 처리하기 위한 명령어를 추가했습니다. 보다 최근의 변경 사항으로는 성능 또는 내결함성 향상을 위해 동시 다중 판독(SMT)을 추가하는 것이 있습니다.[15]

역사

BBC 마이크로

에이콘 컴퓨터의 최초의 성공적인 디자인은 1981년 12월에 소개된 BBC 마이크로였습니다. 이것은 MOS Technology 6502 CPU를 기반으로 한 비교적 전통적인 기계였지만, 더 빠른 DRAM을 사용했기 때문에 애플 II와 같은 경쟁 디자인의 성능보다 대략 두 배의 속도로 작동했습니다. 그 시대의 일반적인 DRAM은 약 2 MHz에서 작동했습니다. Acorn은 Hitachi와 더 빠른 4 MHz 부품 공급을 위한 계약을 체결했습니다.[16]

그 시대의 기계들은 일반적으로 프로세서와 프레임 버퍼 사이에 메모리를 공유했고, 이를 통해 프로세서는 별도의 입출력(I/O)을 수행할 필요 없이 화면의 내용을 빠르게 업데이트할 수 있었습니다. 비디오 디스플레이의 타이밍이 정확하기 때문에 비디오 하드웨어는 해당 메모리에 우선적으로 액세스해야 했습니다. 6502의 설계에 이상이 생겼기 때문에 CPU는 절반의 시간 동안 메모리를 그대로 두었습니다. 따라서 CPU를 1MHz로 실행함으로써 비디오 시스템은 다운 시간 동안 데이터를 읽을 수 있었고 RAM의 총 2MHz 대역폭을 차지했습니다. BBC Micro에서는 4 MHz RAM을 사용하여 동일한 기술을 사용할 수 있었지만 두 배의 속도로 실행되었습니다. 이를 통해 시장에서 유사한 기계를 능가할 수 있었습니다.[17]

에이콘 비즈니스 컴퓨터

1981년은 IBM Personal Computer가 도입된 해이기도 했습니다. 6502의 8비트 설계와 비교하여 16비트 CPU인 인텔 8088을 사용하여 전체적으로 더 높은 성능을 제공했습니다. 이 제품의 도입으로 데스크톱 컴퓨터 시장은 크게 변화했습니다. 지난 5년 동안 주로 취미 및 게임 시장이 생겨났던 것이 이전의 8비트 디자인으로는 경쟁할 수 없는 필수 비즈니스 도구로 바뀌기 시작했습니다. 모토로라 68000[18]National Semiconductor NS32016과 같은 더 새로운 32비트 디자인도 출시되었습니다.[19]

Acorn은 이 시장에서 경쟁하는 방법을 고려하기 시작했고 Acorn Business Computer라는 이름의 새로운 종이 디자인을 제작했습니다. 그들은 BBC 마이크로의 열 배의 성능을 가진 기계를 생산하는 것을 목표로 삼았지만, 가격은 같았습니다.[20] 이것은 PC보다 성능이 뛰어나고 가격이 저렴합니다. 동시에, 최근 애플 리사의 도입은 그래픽 사용자 인터페이스(GUI) 개념을 더 많은 청중에게 제공하고 GUI를 가진 기계의 미래를 제안했습니다.[21] 그러나 Lisa는 지원 칩, 대용량 메모리, 하드 디스크 드라이브로 가득 차 있어 가격이 9,995달러로 매우 비쌌습니다.[22]

그런 다음 엔지니어들은 사용 가능한 모든 CPU 설계를 연구하기 시작했습니다. 기존의 16비트 디자인에 대한 그들의 결론은 훨씬 더 비싸고 여전히 BBC Micro 디자인보다 약간 더 높은 성능만을 제공하는 [23]"약간 엉망"이라는 것이었습니다. 그들은 또한 그 수준에서도 작동하기 위해 거의 항상 많은 수의 지원 칩을 요구했고, 이것은 컴퓨터 전체의 비용을 상승시켰습니다. 이러한 시스템은 단순히 설계 목표에 도달하지 못할 것입니다.[23] 그들은 또한 새로운 32비트 디자인을 고려했지만, 이러한 디자인들은 훨씬 더 비용이 많이 들고 지원 칩에도 같은 문제가 있었습니다.[24] 소피 윌슨(Sophie Wilson)에 따르면 당시 테스트한 모든 프로세서는 약 4 Mbit/초 대역폭으로 거의 동일한 성능을 발휘했습니다.[25][a]

두 가지 중요한 사건이 에이콘을 ARM으로 이끌었습니다. 하나는 캘리포니아 대학교 버클리에서 일련의 보고서를 발표한 것인데, 이 보고서는 단순한 칩 디자인은 그럼에도 불구하고 시장에 나와 있는 최신 32비트 디자인보다 훨씬 높은 매우 높은 성능을 가질 수 있다고 제안했습니다.[26] 두 번째는 스티브 퍼버(Steve Furber)와 소피 윌슨(Sophie Wilson)이 MOS 팀의 논리적 후계자가 되어 WDC 65C02와 같은 새로운 버전을 제공하는 빌 멘쉬(Bill Mensch)와 그의 여동생이 운영하는 회사인 웨스턴 디자인 센터(Western Design Center)를 방문한 것입니다. Acorn 팀은 고등학생들이 Apple II 기계에서 칩 레이아웃을 만드는 것을 보았고, 이것은 누구나 할 수 있다는 것을 암시했습니다.[27][28] 이와는 대조적으로, 현대식 32비트 CPU를 연구하는 또 다른 디자인 회사를 방문한 결과, 12명 이상의 멤버로 구성된 팀이 이미 디자인 H 개정 작업을 진행 중이었지만 여전히 버그가 포함되어 있는 것으로 나타났습니다.[b] 이로써 1983년 말에 자체 CPU 설계인 Acorn RISC Machine을 시작하기로 결정했습니다.[29]

디자인 컨셉

Berkeley RISC의 원래 디자인은 어떤 의미에서는 교육 시스템이었고, 완전한 성능을 위해 특별히 설계된 것이 아닙니다. RISC의 기본적인 레지스터 헤비 및 로드/스토어 개념에 ARM은 6502의 좋은 평가를 받은 디자인 노트를 많이 추가했습니다. 그중에서도 가장 중요한 것은 인터럽트를 신속하게 처리할 수 있다는 점이었습니다. 이를 통해 기계는 외부 하드웨어를 추가하지 않고도 합리적인 입출력 성능을 제공할 수 있었습니다. 6502와 유사한 성능의 인터럽트를 제공하기 위해 ARM 설계는 물리적 주소 공간을 총 주소 지정 가능 공간의 64MB로 제한하여 26비트의 주소가 필요합니다. 명령어의 길이가 4바이트(32비트)이고 4바이트 경계에 정렬되어야 하므로 명령어 주소의 하위 2비트는 항상 0이었습니다. 이는 프로그램 카운터(PC)가 24비트만 있으면 된다는 것을 의미하며, 32비트 레지스터에 8비트 프로세서 플래그와 함께 저장할 수 있습니다. 즉, 인터럽트를 받으면 한 번의 작업으로 전체 시스템 상태를 저장할 수 있는 반면, PC가 완전한 32비트 값이라면 PC와 상태 플래그를 저장하기 위해 별도의 작업이 필요합니다. 이 결정으로 인터럽트 오버헤드가 절반으로 줄었습니다.[30]

실질적인 실제 성능 측면에서 가장 중요한 또 다른 변화는 페이지 모드 DRAM을 활용하도록 명령어 세트를 수정한 것입니다. 최근에 도입된 페이지 모드는 후속 메모리 액세스가 DRAM 칩에서 대략 동일한 위치, 즉 "페이지"에 있는 경우 두 배의 속도로 실행되도록 허용했습니다. 버클리의 디자인은 페이지 모드를 고려하지 않았고 모든 메모리를 동등하게 취급했습니다. ARM 디자인은 페이지 모드를 사용하여 하나의 페이지에 여러 레지스터를 채우거나 저장하는 데 사용할 수 있는 벡터와 같은 특별한 메모리 액세스 명령어인 "S-cycles"를 추가했습니다. 이를 통해 사용할 수 있을 때 메모리 성능이 두 배로 향상되었으며 그래픽 성능에 특히 중요했습니다.[31]

Berkeley RISC 설계는 레지스터 을 사용하여 프로시저 호출에서 수행되는 레지스터 저장 및 복원 수를 줄였지만 ARM 설계는 이를 채택하지 않았습니다.

Wilson은 명령어 세트를 개발하여 BBC BASIC에서 프로세서 시뮬레이션을 작성하고 두 번째 6502 프로세서를 BBC Micro에서 실행했습니다.[32][33] 이것은 에이콘 엔지니어들이 올바른 길을 가고 있다는 것을 확신시켰습니다. 윌슨은 에이콘의 CEO인 헤르만 하우저에게 다가가 더 많은 자료를 요청했습니다. Hauser는 Wilson의 ISA를 기반으로 실제 프로세서를 설계하기 위해 승인을 하고 소규모 팀을 구성했습니다.[34] 공식적인 Acorn RISC Machine 프로젝트는 1983년 10월에 시작되었습니다.

ARM1

BBC 마이크로를 위한 ARM12 프로세서

Acorn은 VLSI Technology를 "실리콘 파트너"로 선택했는데, 이는 Acorn의 ROM 및 커스텀 칩 공급원이었기 때문입니다. Acorn은 디자인을, VLSI는 레이아웃과 제작을 제공했습니다. ARM 실리콘의 첫 번째 샘플은 1985년 4월 26일에 처음으로 받고 테스트했을 때 제대로 작동했습니다.[3] ARM1로 알려진 이 버전들은 6MHz에서 실행되었습니다.[35]

최초의 ARM 애플리케이션은 BBC Micro의 두 번째 프로세서로서 지원 칩(VIDC, IOC, MEMC)의 개발을 완료하기 위한 시뮬레이션 소프트웨어 개발을 도왔고, ARM2 개발에 사용된 CAD 소프트웨어의 속도를 높였습니다. 윌슨은 이후 BBC BASIC을 ARM 어셈블리 언어로 다시 썼습니다. 명령어 세트를 설계하면서 얻은 심층적인 지식은 코드의 밀도를 매우 높게 하여 ARM BBC BASIC을 모든 ARM 에뮬레이터에게 매우 좋은 테스트로 만들었습니다.

ARM2

ARM1 보드의 시뮬레이션 결과는 8 MHz에서 작동하는 ARM2 설계가 1986년 말에 도입되었고, 1987년 초에는 10~12 MHz에서 속도 범프 버전이 도입되었습니다.[c] 이전에는 소프트웨어로 곱셈을 수행해야 했지만, 기본 아키텍처에서 큰 변화는 부스 곱셈기가 추가되었다는 것입니다.[37] 또한 새로운 Fast Interrupt reQuest 모드, 줄여서 FIQ는 레지스터 8~14를 인터럽트 자체의 일부로 교체할 수 있게 했습니다. 이는 FIQ 요청이 레지스터를 저장할 필요가 없다는 것을 의미하며 추가 속도 중단을 의미합니다.[38]

Drrystone 벤치마크에 따르면, ARM2는 AmigaMacintosh SE와 같은 일반적인 7 MHz 68000 기반 시스템의 성능보다 약 7배나 뛰어났습니다. 16MHz로 동작하는 인텔 80386보다 2배 빠르며, 멀티 프로세서 VAX-11/784 슈퍼미니 컴퓨터와 거의 같은 속도였습니다. 이를 능가하는 유일한 시스템은 Sun SPARCMIPS R2000 RISC 기반 워크스테이션이었습니다.[39] 또한 CPU는 고속 I/O를 위해 설계되었기 때문에 이러한 기계에서 볼 수 있는 많은 지원 칩을 분리했습니다. 특히 워크스테이션에서 자주 볼 수 있는 전용 DMA(Direct Memory Access) 컨트롤러가 없었습니다. 또한 메모리와 타이밍에 대한 동일한 기본 가정을 바탕으로 그래픽 시스템을 단순화했습니다. 결과적으로 설계가 대폭 간소화되어 고가의 워크스테이션과 동등한 성능을 제공하면서도 현대의 데스크톱과 유사한 가격대의 성능을 제공했습니다.[39]

ARM2는 32비트 데이터 버스, 26비트 주소 공간, 27개의 32비트 레지스터를 갖추고 있으며, 이 중 16개는 한 번에 액세스할 수 있습니다(PC 포함).[40] ARM2는 트랜지스터 수가 30,000개에 [41]불과했고 모토로라의 6년 된 68,000 모델은 68,000개 정도였습니다. 이러한 단순성의 대부분은 68000개 트랜지스터의 약 1/4에서 1/3에 해당하는 마이크로코드의 부족과 (당일 대부분의 CPU와 마찬가지로) 캐시의 부족에서 비롯되었습니다. 이러한 단순성 덕분에 ARM2는 낮은 전력 소비와 더 간단한 열 패키징을 구현할 수 있었습니다. 이는 더 적은 수의 전력 트랜지스터를 사용하면서도 현재의 IBM PS/2 모델 50보다 더 나은 성능을 제공하는 1987년의 Intel 80286을 사용하여 1.8 MIPS @ 10 MHz를 제공하고 이후 1987년 PS/270의 2 MIPS를 제공합니다. Intel 386 DX @ 16 MHz를 사용합니다.[42][43]

후속 제품인 ARM3는 4KB 캐시로 생산되어 성능이 더욱 향상되었습니다.[44] 주소 버스는 ARM6에서 32비트로 확장되었지만 상태 플래그에 대한 예약 비트 때문에 프로그램 코드는 26비트 호환 모드에서 처음 64MB 메모리 내에 있어야 했습니다.[45]

Advanced RISC Machine Ltd – ARM6

칩 위의 마이크로프로세서 기반 시스템
ARM610 마이크로프로세서의 다이

1980년대 후반, 애플 컴퓨터VLSI 테크놀로지는 ARM 코어의 새로운 버전에 대해 에이콘과 협력하기 시작했습니다. 1990년, Acorn은 디자인 팀을 Advanced RISC Machine [46][47][48]Ltd라는 이름의 새로운 회사로 분사했고, 1998년 모회사인 Arm Holdings plc가 런던 증권 거래소나스닥에 상장하면서 ARM Ltd가 되었습니다.[49] 새로운 애플-ARM 작업은 결국 1992년 초에 처음 출시된 ARM6로 진화하게 됩니다. 애플은 ARM6 기반의 ARM610을 애플 뉴턴 PDA의 기반으로 사용했습니다.

초기 라이센스 보유자

1994년, 에이콘은 RiscPC 컴퓨터의 메인 중앙 처리 장치(CPU)로 ARM610을 사용했습니다. DEC는 ARMv4 아키텍처에 라이선스를 부여하고 StrongARM을 생산했습니다.[50] 233 MHz에서 이 CPU는 1와트(신형은 훨씬 적은)만을 끌어 들였습니다. 이 작업은 나중에 소송 조정의 일환으로 인텔에 전달되었고, 인텔은 StrongARM으로 i960 제품군을 보완할 기회를 잡았습니다. 인텔은 나중에 XScale이라는 이름의 고성능 구현체를 자체 개발하여 이후 마벨에 판매했습니다. ARM 코어의 트랜지스터 수는 이러한 변화 동안 본질적으로 동일하게 유지되었습니다. ARM2는 30,000개의 트랜지스터를 가지고 있었던 [51]반면, ARM6는 35,000개로 증가하는 데 그쳤습니다.[52]

시장점유율

2005년에는 판매된 모든 휴대폰의 약 98%가 적어도 하나의 ARM 프로세서를 사용했습니다.[53] 2010년 ARM 아키텍처를 기반으로 한 칩 생산업체들은 스마트폰의 95%, 디지털 텔레비전 셋톱 박스의 35%, 모바일 컴퓨터의 10%를 차지하는 61억 개의 ARM 기반 프로세서의 출하량을 보고했습니다. 2011년 32비트 ARM 아키텍처는 모바일 장치에서 가장 널리 사용되는 아키텍처이며 임베디드 시스템에서 가장 널리 사용되는 32비트 아키텍처였습니다.[54] 2013년에는 100억 개가 생산되었으며[55] "ARM 기반 칩은 전 세계 모바일 기기의 거의 60%에서 발견됩니다."[56]

라이센싱

STM32F103VGT6 ARM Cortex-M3 마이크로 컨트롤러의 다이(Die) STMicroelectronics에 의한 1MB 플래시 메모리

코어 라이선스

Arm Ltd.의 주요 사업은 IP 코어를 판매하는 것인데, 라이센스 계약자는 해당 코어를 기반으로 마이크로컨트롤러(MCU), CPU시스템 온 칩을 만드는 데 사용합니다. 원래 설계 제조업체는 ARM 코어를 다른 부품과 결합하여 완전한 장치를 생산하는데, 일반적으로 기존의 반도체 제조 공장(팹)에서 저렴한 비용으로 제조할 수 있고 여전히 상당한 성능을 제공합니다. 가장 성공적인 구현은 ARM7이었습니다.억대 판매 TDMI. Atmel은 ARM7TDMI 기반 임베디드 시스템의 전구체 디자인 센터였습니다.

스마트폰, PDA 및 기타 모바일 장치에 사용되는 ARM 아키텍처는 ARMv5에서 ARMv8-A에 이르기까지 다양합니다.

2009년, 일부 제조업체들은 인텔 Atom 기반의 넷북과 직접적인 경쟁 관계에서 ARM 아키텍처 CPU를 기반으로 한 넷북을 선보였습니다.[57]

Arm Ltd.는 비용과 성과물이 다양한 다양한 라이센스 조건을 제공합니다. Arm Ltd.는 모든 라이센스 사용자에게 ARM 코어에 대한 통합 가능한 하드웨어 설명과 완전한 소프트웨어 개발 도구 세트(컴파일러, 디버거, 소프트웨어 개발 키트) 및 ARM CPU가 포함된 제조된 실리콘을 판매할 권리를 제공합니다.

ARM의 핵심 디자인을 통합한 SoC 패키지에는 엔비디아 테그라의 첫 3세대, CSR plc의 Quatro 제품군, ST-Ericsson의 Nova 및 NovaThor, 실리콘 랩스의 Precision32 MCU, 텍사스 인스트루먼트의 OMAP 제품, 삼성의 Hummingbird 및 Exynos 제품, 애플의 A4, A5A5X, NXP의 i.MX가 포함됩니다.

ARM 코어를 자체 칩 설계에 통합하고자 하는 팹리스 라이센스 보유자들은 일반적으로 즉시 제조할 수 있는 검증된 반도체 지적 재산권 코어를 획득하는 데에만 관심이 있습니다. Arm Ltd.는 이러한 고객을 위해 선택한 ARM 코어에 대한 게이트 넷리스트 설명과 함께 추상화된 시뮬레이션 모델 및 테스트 프로그램을 제공하여 설계 통합 및 검증을 지원합니다. IDM(Integrated Device Manufacturer) 및 주조 공장 운영자를 포함한 보다 야심찬 고객들은 프로세서 IP를 합성 가능한 RTL(Verilog) 형태로 구입하기로 선택합니다. 합성 가능한 RTL을 통해 고객은 아키텍처 수준의 최적화 및 확장을 수행할 수 있습니다. 이를 통해 설계자는 수정되지 않은 넷리스트(높은 클럭 속도, 매우 낮은 전력 소비, 명령 집합 확장 등)로 가능하지 않은 이색적인 설계 목표를 달성할 수 있습니다. Arm Ltd.는 ARM 아키텍처 자체를 재판매할 수 있는 권리를 라이센스 소유자에게 부여하지 않지만, 라이센스 소유자는 칩 장치, 평가 보드 및 완전한 시스템과 같은 제조 제품을 자유롭게 판매할 수 있습니다. 상인 주조 공장은 특수한 경우가 될 수 있습니다. 일반적으로 ARM 코어가 포함된 실리콘 완제품을 판매할 수 있을 뿐만 아니라 다른 고객을 위해 ARM 코어를 재제조할 수 있는 권리를 가지고 있습니다.

Arm Ltd.는 인지된 가치에 따라 IP 가격을 책정합니다. 일반적으로 낮은 성능의 ARM 코어는 높은 성능의 코어보다 라이센스 비용이 낮습니다. 구현 측면에서 합성 가능한 코어는 하드 매크로(블랙박스) 코어보다 비용이 더 듭니다. 가격 문제가 복잡해지는 삼성이나 후지쯔와 같이 ARM 라이센스를 보유하고 있는 한 머천트 파운드리는 팹 고객에게 라이센스 비용을 줄일 수 있습니다. 주조 공장의 사내 설계 서비스를 통해 ARM 코어를 획득하는 대가로, 고객은 ARM의 초기 라이센스 비용을 절감하거나 없앨 수 있습니다.

Fujitsu/Samsung은 자체 설계 서비스가 없는 전용 반도체 주조 공장(TSMC 및 UMC 등)과 비교하여 제조된 웨이퍼당 2~3배의 비용을 청구합니다.[citation needed] 디자인 서비스 주조 공장은 낮은 용량에서 중간 용량의 애플리케이션에 대해 전반적으로 낮은 가격(라이선스 수수료 보조를 통해)을 제공합니다. 대량 양산 부품의 경우 낮은 웨이퍼 가격을 통해 달성할 수 있는 장기적인 비용 절감을 통해 ARM의 NRE(비재순환 엔지니어링) 비용의 영향을 줄여 전용 주조 공장이 더 나은 선택을 할 수 있습니다.

Companies that have developed chips with cores designed by Arm include Amazon.com's Annapurna Labs subsidiary,[58] Analog Devices, Apple, AppliedMicro (now: MACOM Technology Solutions[59]), Atmel, Broadcom, Cavium, Cypress Semiconductor, Freescale Semiconductor (now NXP Semiconductors), Huawei, Intel,[dubious ] Maxim Integrated, Nvidia, NXP, Qualcomm, Renesas, 삼성전자, ST마이크로일렉트로닉스, 텍사스인스트루먼츠, 자일링스.

ARM Cortex 기술 라이센스를 기반으로 제작

2016년 2월, ARM은 BoC(Built on Cortex) 라이선스로 단축된 빌드 온 ARM Cortex Technology 라이선스를 발표했습니다. 이 라이선스는 기업들이 ARM과 협력하여 ARM Cortex 디자인을 수정할 수 있도록 해줍니다. 이러한 디자인 수정은 다른 회사와 공유되지 않습니다. 이러한 세미 커스텀 코어 디자인은 Kryo 280과 같은 브랜드 자유도를 가지고 있습니다.

현재 Build on ARM Cortex Technology의 라이센스를 보유하고 있는 회사로는 Qualcomm이 있습니다.[60]

건축허가

기업은 또한 ARM 명령어 세트를 사용하여 자체 CPU 코어를 설계하기 위해 ARM 아키텍처 라이센스를 획득할 수 있습니다. 이러한 코어는 ARM 아키텍처를 완전히 준수해야 합니다. ARM 아키텍처를 구현하는 코어를 설계한 회사는 애플, AppliedMicro(현재: 암페어 컴퓨팅), Broadcom, Cavium(현재: 마벨), Digital Equipment Corporation, Intel, Nvidia, Qualcomm, Samsung Electronics, Fujitsu, NUVIA Inc. (2021년 Qualcomm에 인수됨) 등입니다.

ARM 플렉서블 액세스

2019년 7월 16일, ARM은 ARM Flexible Access를 발표했습니다. ARM Flexible Access는 개발을 위해 포함된 ARM 지적 재산권(IP)에 무제한으로 액세스할 수 있습니다. 고객이 주조 공장 테이프아웃 또는 시제품 제작에 도달하면 제품별 라이센스 비용이 필요합니다.[61][62]

지난 2년간 ARM의 가장 최근 IP의 75%가 ARM Flexible Access에 포함되어 있습니다. 2019년 10월 기준:

  • CPU: Cortex-A5, Cortex-A7, Cortex-A32, Cortex-A34, Cortex-A35, Cortex-A53, Cortex-R5, Cortex-R8, Cortex-R52, Cortex-M0, Cortex-M0+, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33
  • GPU: Mali-G52, Mali-G31. 말리 드라이버 개발 키트(DDK)가 포함되어 있습니다.
  • 상호 연결: CoreLink NIC-400, CoreLink NIC-450, CoreLink CCI-400, CoreLink CCI-500, CoreLink CCI-550, ADB-400 AMBA, XHB-400 AXI-AHB
  • 시스템 컨트롤러: CoreLink GIC-400, CoreLink GIC-500, PL192 VIC, BP141 TrustZone 메모리 래퍼, CoreLink TZC-400, CoreLink L2C-310, CoreLink MMU-500, BP140 메모리 인터페이스
  • 보안 IP: CryptoCell-312, CryptoCell-712, TrustZone 참 난수 생성기
  • 주변 컨트롤러: PL011 UART, PL022 SPI, PL031 RTC
  • 디버그 & 트레이스: 코어사이트 SoC-400, 코어사이트 SDC-600, 코어사이트 STM-500, 코어사이트 시스템 트레이스 매크로셀, 코어사이트 트레이스 메모리 컨트롤러
  • 디자인 키트: 코르스톤-101, 코르스톤-201
  • 물리 IP: 메모리 컴파일러, 로직 라이브러리, GPIO 및 문서를 포함한 Cortex-M33 TSMC 22ULL용 아티잔 PIK
  • 공구 및 재료: 소크라테스 IP 툴링ARM Design Studio, 가상 시스템 모델
  • 지원: 표준 ARM 기술 지원, ARM 온라인 교육, 유지보수 업데이트, 현장 교육 및 설계 검토에 대한 크레딧

코어

건축 코어
비트폭의
코어 프로필 참조-
귀천
암 주식회사 서드 파티
ARMv1
ARM1
클래식
ARMv2
32
ARM2, ARM250, ARM3 호박색, STORM 개방 소프트[63] 코어
클래식
ARMv3
32
ARM6, ARM7
클래식
ARMv4
32
ARM8 StrongARM, FA526, ZAP 오픈 소스 프로세서 코어
클래식
ARMv4T
32
ARM7TDMI, ARM9TDMI, SecurCore SC100
클래식
ARMv5TE
32
ARM7EJ, ARM9E, ARM10E XScale, FA626TE, Feroceon, PJ1/Mohawk
클래식
ARMv6
32
ARM11
클래식
ARMv6-M
32
ARM Cortex-M0, ARM Cortex-M0+, ARM Cortex-M1, 보안코어 SC000
ARMv7-M
32
ARM Cortex-M3, SecurCore SC300 애플 M7 모션 코프로세서
마이크로컨트롤러
ARMv7E-M
32
ARM Cortex-M4, ARM Cortex-M7
마이크로컨트롤러
ARMv8-M
32
ARM Cortex-M23,[65] ARM Cortex-M33[66]
마이크로컨트롤러
ARMv8.1-M
32
ARM Cortex-M55, ARM Cortex-M85
마이크로컨트롤러
ARMv7-R
32
ARM Cortex-R4, ARM Cortex-R5, ARM Cortex-R7, ARM Cortex-R8
ARMv8-R
32
ARM 코텍스-R52
실시간
64
ARM 코텍스-R82
실시간
ARMv7-A
32
ARM Cortex-A5, ARM Cortex-A7, ARM Cortex-A8, ARM Cortex-A9, ARM Cortex-A12, ARM Cortex-A15, ARM Cortex-A17 퀄컴 스콜피온/크레이트, PJ4/쉬바, 애플 스위프트 (A6, A6X)
ARMv8-A
32
ARM 코텍스-A32[72]
어플
64/32
ARM Cortex-A35,[73] ARM Cortex-A53, ARM Cortex-A57,[74] ARM Cortex-A72,[75] ARM Cortex-A73[76] X-Gene, Nvidia 덴버 1/2, Cavium ThunderX, AMD K12, Apple Cyclone (A7)/태풍 (A8, A8X)/트위스터 (A9, A9X)/허리케인+제퍼 (A10, A10X), Qualcomm Kryo, 삼성 M1/M2 ("Mongoose")/M3 ("Meerkat")
어플
ARM 코텍스-A34[82]
어플
ARMv8.1-A
64/32
TBA 카비움 썬더X2
어플
ARMv8.2-A
64/32
ARM Cortex-A55,[84] ARM Cortex-A75,[85] ARM Cortex-A76,[86] ARM Cortex-A77, ARM Cortex-A78, ARM Cortex-X1, ARM Neoverse N1 Nvidia Carmel, Samsung M4("치타"), Fujitsu A64FX(ARMv8 SVE 512비트)
어플
64
ARM Cortex-A65, ARM Neoverse E1(SMT), ARM Cortex-A65AE[90](예: AE도 있음). ARMv8.4 Dot 제품; 고급 운전자 보조 시스템(ADAS)과 같은 안전 중요 작업을 위해 제작됨 애플 몬순+미스트랄(A11) (2017년 9월)
어플
ARMv8.3-A
64/32
TBA
어플
64
TBA 애플 보텍스+템페스트 (A12, A12X, A12Z), 마블 썬더X3 (v8.3+)[91]
어플
ARMv8.4-A
64/32
TBA
어플
64
ARM 네오오버 V1 애플 라이트닝+썬더(A13), 애플 파이어스톰+Icestorm (A14, M1)
어플
ARMv8.5-A
64/32
TBA
어플
64
TBA
어플
ARMv8.6-A
64
TBA 애플아발란치+눈보라(A15, M2), 애플에베레스트+톱니(A16)[92]
어플
ARMv8.7-A
64
TBA
어플
ARMv8.8-A
64
TBA
어플
ARMv8.9-A
64
TBA
어플
ARMv9.0-A
64
ARM Cortex-A510, ARM Cortex-A710, ARM Cortex-A715, ARM Cortex-X2, ARM Cortex-X3, ARM Neoverse E2, ARM Neoverse N2, ARM Neoverse V2
어플
ARMv9.1-A
64
TBA
어플
ARMv9.2-A
64
ARM Cortex-A520, ARM Cortex-A720, ARM Cortex-X4
어플
ARMv9.3-A
64
TBA
어플
ARMv9.4-A
64
TBA
어플
  1. ^ a b 초기 ARM 프로세서의 대부분의 데이터 경로와 CPU 레지스터는 32비트였지만 주소 지정이 가능한 메모리는 26비트로 제한되었고 상위 비트는 프로그램 카운터 레지스터의 상태 플래그에 사용되었습니다.
  2. ^ a b c ARMv3는 이전 버전 아키텍처의 26비트 주소를 지원하는 호환성 모드를 포함했습니다. 이 호환성 모드는 ARMv4에서는 옵션이며, ARMv5에서는 완전히 제거되었습니다.

Arm은 설계에 ARM 코어를 구현하는 공급업체 목록(애플리케이션 특정 표준 제품(ASSP), 마이크로프로세서 및 마이크로컨트롤러)을 제공합니다.[98]

ARM 코어의 응용 예

Rockchip 기반 쿼드코어 안드로이드 "미니 PC"인 Tronsmart MK908, 크기 비교를 위해 마이크로SD 카드를 옆에 두고 있습니다.

ARM 코어는 여러 제품, 특히 PDA스마트폰에 사용됩니다. 일부 컴퓨팅 예로는 마이크로소프트1세대 서피스, 서피스 2포켓 PC 장치(2002년 이후), 애플아이패드, 에이수스Eee Pad Transformer 태블릿 컴퓨터, 크롬북 노트북 등이 있습니다. 다른 것들은 애플아이폰 스마트폰과 아이팟 휴대용 미디어 플레이어, 캐논 파워샷 디지털 카메라, 닌텐도 스위치 하이브리드, Wii 보안 프로세서와 3DS 휴대용 게임기, 그리고 톰 톰 턴 바이 턴 내비게이션 시스템을 포함합니다.

2005년, 암은 인간의 뇌를 시뮬레이션하기 위해 ARM 코어를 사용한 맨체스터 대학의 컴퓨터 SpiNaker의 개발에 참여했습니다.[99]

ARM 칩은 또한 Raspberry Pi, BeagleBoard, BeagleBone, PandaBoard 및 기타 단일 보드 컴퓨터에 사용되는데, 이는 ARM 칩이 매우 작고, 가격이 저렴하며, 전력 소모가 매우 적기 때문입니다.

32비트 아키텍처

ARMv7은 2015년부터 이 Raspberry Pi 2와 같은 인기 있는 Raspberry Pi 단판 컴퓨터의 구형 버전에 전원을 공급하는 데 사용되었습니다.
ARMv7은 또한 싱글 보드 컴퓨터의 CuBox 제품군에 전원을 공급하는 데 사용됩니다.

Armv7-A(AArch32 구현, 자세한 내용은 Armv8-A 섹션 참조)와 같은 32비트 ARM 아키텍처(ARM32)는 2011년 현재 모바일 기기에서 가장 널리 사용되는 아키텍처였습니다.[54]

1995년 이래로, ARM 아키텍처 참조 매뉴얼의 다양한 버전(명령어 의미론 등)은 ARM 프로세서 아키텍처 및 명령어 세트에 대한 문서의 주요 소스가 되어 왔으며, 모든 ARM 프로세서가 지원해야 하는 인터페이스를 다양한 구현 세부 사항과 구별했습니다. 아키텍처는 시간이 지남에 따라 발전해 왔으며, 아키텍처의 버전 7인 ARMv7은 세 가지 아키텍처 "프로파일"을 정의합니다.

  • A-profile, "Application" 프로파일, Cortex-A 시리즈의 32비트 코어와 일부 비 ARM 코어에 의해 구현됨
  • Cortex-R 시리즈의 코어로 구현된 "실시간" 프로파일인 R-profile
  • M-profile, "Microcontroller" 프로파일, Cortex-M 시리즈의 대부분의 코어에서 구현됩니다.

아키텍처 프로파일은 처음에 ARMv7에 대해 정의되었지만, 이후 ARM은 ARMv6-M 아키텍처(Cortex M0/M0+/M1에 의해 사용됨)를 ARMv7-M 프로파일의 하위 집합으로 정의했습니다.

CPU 모드

M-프로필을 제외한 32비트 ARM 아키텍처는 구현된 아키텍처 기능에 따라 몇 가지 CPU 모드를 지정합니다. 언제든지 CPU는 하나의 모드에만 있을 수 있지만 외부 이벤트(인터럽트)로 인해 모드를 전환하거나 프로그래밍 방식으로 전환할 수 있습니다.[100]

  • 사용자 모드: 유일한 비특권 모드입니다.
  • FIQ 모드: 프로세서가 빠른 인터럽트 요청을 수락할 때마다 입력되는 특권 모드입니다.
  • IRQ 모드: 프로세서가 인터럽트를 받아들일 때마다 입력되는 특권 모드입니다.
  • Supervisor(svc) 모드: CPU가 리셋될 때나 SVC 명령이 실행될 때마다 진입하는 특권 모드.
  • 중단 모드: 프리페치 중단 또는 데이터 중단 예외가 발생할 때마다 입력되는 권한 있는 모드입니다.
  • Undefined mode: 정의되지 않은 명령 예외가 발생할 때마다 입력되는 권한 있는 모드입니다.
  • 시스템 모드(ARMv4 이상): 예외로 입력되지 않은 유일한 권한 모드입니다. 사용자 모드가 아닌 다른 권한 있는 모드에서 CPSR(Current Program Status Register)의 모드 비트에 명시적으로 쓰는 명령을 실행해야만 입력할 수 있습니다.
  • 모니터 모드(ARMv6 및 ARMv7 보안 확장, ARMv8 EL3): ARM 코어에서 TrustZone 확장을 지원하기 위해 모니터 모드가 도입되었습니다.
  • Hyp 모드(ARMv7 가상화 확장, ARMv8 EL2): CPU의 비보안 작동을 위해 Popek Goldberg 가상화 요구 사항을 지원하는 하이퍼바이저 모드입니다.[101][102]
  • 스레드 모드(ARMv6-M, ARMv7-M, ARMv8-M): 권한 또는 권한 없음으로 지정할 수 있는 모드입니다. MSP(Main Stack Pointer) 또는 PSP(Process Stack Pointer)가 사용되는지 여부는 권한 있는 액세스 권한을 가진 CONTROL 레지스터에서도 지정할 수 있습니다. 이 모드는 RTOS 환경에서 사용자 작업을 위해 설계되었지만 일반적으로 슈퍼 루프용 베어 메탈에서 사용됩니다.
  • 핸들러 모드(ARMv6-M, ARMv7-M, ARMv8-M): 예외 처리 전용 모드(스레드 모드에서 처리되는 RESET 제외). 핸들러 모드는 항상 MSP를 사용하며 권한 있는 레벨에서 작동합니다.

명령어 세트

기존의 에이콘 마이크로컴퓨터에서 사용되던 훨씬 단순한 8비트 6502 프로세서와 같이 마이크로코드 없이 ARM 구현이 유선 연결되었습니다.

32비트 ARM 아키텍처(및 대부분 64비트 아키텍처)는 다음과 같은 RISC 기능을 포함합니다.

  • 로드 스토어 아키텍처.
  • 아키텍처의 원래 버전에서는 정렬되지 않은 메모리 액세스를 지원하지 않습니다. 일부 마이크로컨트롤러 버전을 제외한 ARMv6 이상에서는 원자성이 보장되지 않는 것과 같은 몇 가지 제한 사항이 있는 하프 워드 및 싱글 워드 로드/스토어 명령에 대한 정렬되지 않은 액세스를 지원합니다.[103][104]
  • 균일한 16 × 32비트 레지스터 파일(프로그램 카운터, 스택 포인터 및 링크 레지스터 포함).
  • 코드 밀도가 감소하는 비용으로 디코딩 및 파이프라인을 용이하게 하기 위한 32비트의 고정 명령어 폭. 이후명령어 세트는 16비트 명령어를 추가하고 코드 밀도를 높였습니다.
  • 대부분 단일 클럭 사이클 실행입니다.

인텔 80286 및 모토로라 68020과 같은 프로세서와 비교하여 더 단순한 디자인을 보완하기 위해 다음과 같은 추가적인 디자인 기능이 사용되었습니다.

  • 대부분의 명령어를 조건부로 실행하면 분기 오버헤드가 감소하고 초기 칩에 분기 예측기가 없는 것을 보완할 수 있습니다.
  • 산술 명령은 원하는 경우에만 조건 코드를 변경합니다.
  • 32비트 배럴 쉬프터는 대부분의 산술 명령 및 주소 계산과 함께 성능 패널티 없이 사용할 수 있습니다.
  • 강력한 색인 주소 지정 모드가 있습니다.
  • 링크 레지스터는 빠른 리프 기능 호출을 지원합니다.
  • 간단하지만 빠른 2 우선 순위 수준의 인터럽트 서브시스템이 레지스터 뱅크를 전환했습니다.

산술적 지시

ARM에는 덧셈, 뺄셈, 곱셈에 대한 정수 산술 연산이 포함되며, 아키텍처의 일부 버전은 분할 연산도 지원합니다.

ARM은 32비트 결과 또는 64비트 결과와 함께 32비트 × 32비트 곱셈을 지원하지만 Cortex-M0 / M0+ / M1 코어는 64비트 결과를 지원하지 않습니다.[105] 일부 ARM 코어는 16비트 × 16비트 및 32비트 × 16비트 곱셈도 지원합니다.

분할 지침은 다음 ARM 아키텍처에만 포함됩니다.

  • Armv7-M 및 Armv7E-M 아키텍처는 항상 분할 명령을 포함합니다.[106]
  • Armv7-R 아키텍처는 항상 분할 명령을 썸 명령 집합에 포함하지만 선택적으로 32비트 명령 집합에 포함합니다.[107]
  • Armv7-A 아키텍처는 선택적으로 분할 명령을 포함합니다. 지침은 Thumb 명령 집합에서만 구현되거나 Thumb 명령 집합에서만 구현되지 않을 수도 있고, Thumb 명령 집합과 ARM 명령 집합 모두에서 구현되지 않을 수도 있으며, Virtualization Extensions가 포함된 경우 구현될 수도 있습니다.[107]

레지스터

CPU 모드 전반에 걸쳐 등록
usr sys svc 조금은 언드 irq fiq
R0
R1
R2
R3
R4
R5
R6
R7
R8 R8_fiq
R9 R9_fiq
R10 R10_fiq
R11 R11_fiq
R12 R12_fiq
R13 R13_svc R13_abt R13_und R13_irq R13_fiq
R14 R14_svc R14_abt R14_und R14_irq R14_fiq
R15
CPSR
SPSR_svc SPSR_abt SPSR_und SPSR_irq SPSR_fiq

레지스터 R0 ~ R7은 모든 CPU 모드에서 동일하며, 뱅크 처리되지 않습니다.

레지스터 R8~R12는 FIQ 모드를 제외한 모든 CPU 모드에서 동일합니다. FIQ 모드에는 고유의 R8부터 R12 레지스터가 있습니다.

R13 및 R14는 시스템 모드를 제외한 모든 권한 있는 CPU 모드에서 뱅크 처리됩니다. 즉, 예외로 인해 진입할 수 있는 각 모드에는 고유의 R13과 R14가 있습니다. 이 레지스터는 일반적으로 각각 스택 포인터와 함수 호출의 반환 주소를 포함합니다.

별칭:

CPSR(Current Program Status Register)에는 다음과 같은 32비트가 있습니다.[108]

  • M(비트 0~4)은 프로세서 모드 비트입니다.
  • T(비트 5)는 엄지손가락 상태 비트입니다.
  • F(비트 6)는 FIQ 비활성화 비트입니다.
  • I(비트 7)은 IRQ 비활성화 비트입니다.
  • (비트 8)은 부정확한 데이터 중단 비활성화 비트입니다.
  • E(비트 9)는 데이터 엔디안니스 비트입니다.
  • IT(비트 10–15 및 25–26)는 if-then 상태 비트입니다.
  • GE(비트 16~19)는 비트 수 이상입니다.
  • DNM(비트 20~23)은 비트를 수정하지 않습니다.
  • J(비트 24)는 자바 상태 비트입니다.
  • Q(비트 27)는 스틱 오버플로 비트입니다.
  • V(비트 28)은 오버플로 비트입니다.
  • C(비트 29)는 캐리/차입/확장 비트입니다.
  • Z(비트 30)은 제로 비트입니다.
  • N(비트 31)은 음수/비트보다 작습니다.

조건실행

거의 모든 ARM 명령어에는 4비트 조건 코드 선택기(predicate)로 구현되는 predication이라는 조건부 실행 기능이 있습니다. 무조건적인 실행을 허용하기 위해 4비트 코드 중 하나를 사용하면 명령이 항상 실행됩니다. 대부분의 다른 CPU 아키텍처는 분기 명령에만 조건 코드를 가지고 있습니다.[109]

술어는 명령어 코드의 32비트 중 4비트를 차지하므로 메모리 액세스 명령어의 변위에 사용할 수 있는 인코딩 비트를 크게 줄이지만 작은 에 대한 코드를 생성할 때 분기 명령을 피합니다. 분기 명령어 자체를 제거하는 것 외에도, 이는 생략된 명령어당 한 사이클의 비용으로 페치/디코드/실행 파이프라인을 유지합니다.

조건부 실행의 좋은 예를 제공하는 알고리즘은 최대 공약수를 계산하기 위한 감산 기반 유클리드 알고리즘입니다. C 프로그래밍 언어에서 알고리즘은 다음과 같이 쓸 수 있습니다.

인트의 gcd(인트의 a, 인트의 b) {   하는 동안에 (a != b)  // 우리는 a < b 또는 a > b일 때 루프에 들어가지만, a == b일 때는 그렇지 않습니다.     한다면 (a > b)   // a > b 이렇게 할 때.       a -= b;     또 다른         // a < b 일 때 (상태중에 a != b 일 때 체크 인 된 후에 (a < b 일 때) 필요하지 않은 경우)       b -= a;   돌아가다 a; } 

동일한 알고리즘을 다음과 같은 방법으로 대상 ARM 지침에 더 가깝게 다시 작성할 수 있습니다.

고리:     // a와 b를 비교합니다.     GT = a > b;     LT = a < b;     NE = a != b;      // 플래그 결과를 기반으로 작업 수행     한다면 (GT) a -= b;    // 다음 값보다 클 경우 *만 뺀다*     한다면 (LT) b -= a;    // 미만인 경우 *전용*을(를) 뺀다.     한다면 (NE) 에 가다 고리; // 비교된 값이 동일하지 않은 경우 *전용* 루프     돌아가다 a; 

다음과 같이 어셈블리 언어로 코딩되었습니다.

; a를 레지스터 r0에 할당, b를 r1에 할당 루프:   CMP    r0, r1       ; 조건 "NE"를 설정합니다(a ≠ b).                             ;               (a > b)일 경우 "GT",                             ;            또는 (a < b)인 경우 "LT"         SUBGT  r0, r0, r1   ; "GT"(Greater Than)이면 a = a - b         SUBLT  r1, r1, r0   ; LT(Less Than)이면 b = b - a         BNE  고리           ; "NE"(Not Equal)인 경우 루프         B    lr             ; 답례하다 

주변의 가지를 피하는 것. then 그리고. else 절. 만약 r0 그리고. r1 어느 것도 동등하지 않습니다. SUB 명령어가 실행되어 조건부 분기가 실행될 필요가 없습니다. while 예를 들어, 루프 상단을 확인합니다. SUBLE (이하)를 사용했습니다.

썸 코드가 더 조밀한 인코딩을 제공하는 방법 중 하나는 비분지 명령에서 4비트 선택기를 제거하는 것입니다.

기타특징

명령 집합의 또 다른 특징은 시프트를 접고 데이터 처리(산술, 논리, 레지스터-레지스터 이동) 명령어로 회전하는 기능으로, 예를 들어 C 언어로 된 문장은 다음과 같습니다.

a += (j << 2); 

한 단어, 한 사이클 명령어로 렌더링할 수 있습니다.[110]

더하다  , , Rj, LSL #2 

이로 인해 일반적인 ARM 프로그램이 예상보다 밀도가 높고 메모리 액세스가 적으므로 파이프라인이 더 효율적으로 사용됩니다.

ARM 프로세서는 또한 PC 상대 어드레싱(실제로 32비트[1] ARM에서는 PC가 16개 레지스터 중 하나임) 및 증가 전후 어드레싱 모드와 같은 다른 RISC 아키텍처에서는 거의 볼 수 없는 기능을 가지고 있습니다.

ARM 설명서 세트는 시간이 지남에 따라 증가했습니다. 예를 들어, 일부 초기 ARM 프로세서(ARM7TDMI 이전)에는 2바이트 수량을 저장하는 명령이 없습니다.

파이프라인 및 기타 구현 문제

ARM7과 그 이전의 구현들은 3단계 파이프라인을 가지고 있습니다; 페치, 디코딩, 실행 단계들입니다. ARM9과 같은 고성능 설계에는 더 깊은 파이프라인이 있습니다. Cortex-A8에는 13단계가 있습니다. 더 높은 성능을 위한 추가적인 구현 변경에는 더 빠른 추가와 더 광범위한 분기 예측 로직이 포함됩니다. 예를 들어, ARM7DI와 ARM7DMI 코어의 차이는 향상된 승수였고, 따라서 "M"이 추가되었습니다.

코프로세서

ARM 아키텍처(pre-Armv8)는 MCR, MRC, MRRC, MCRR 및 유사한 명령어를 사용하여 해결할 수 있는 "copprocessor"를 사용하여 명령어 세트를 확장하는 비침입적인 방법을 제공합니다. 코프로세서 공간은 논리적으로 0부터 15까지의 숫자를 가진 16개의 코프로세서로 나뉘며, 코프로세서 15(cp15)는 캐시를 관리하는 것과 같은 일부 일반적인 제어 기능을 위해 예약됩니다.

ARM 기반 기계에서 주변 장치는 일반적으로 물리적 레지스터를 ARM 메모리 공간에 매핑하거나 보조 프로세서 공간에 매핑하거나 다른 장치(버스)에 연결하여 프로세서에 연결합니다. 보조 프로세서 액세스는 지연 시간이 짧기 때문에 일부 주변 장치(예: XScale 인터럽트 컨트롤러)는 메모리를 통한 액세스와 보조 프로세서를 통한 액세스 모두에서 액세스할 수 있습니다.

다른 경우에는 칩 설계자가 코프로세서 메커니즘을 사용하여 하드웨어를 통합할 뿐입니다. 예를 들어, 이미지 처리 엔진은 작은 ARM7일 수 있습니다.TDMI 코어는 특정 HDTV 트랜스코딩 프리미티브 세트를 지원하기 위한 특수한 연산을 가진 코프로세서와 결합됩니다.

디버깅

모든 최신 ARM 프로세서에는 하드웨어 디버깅 기능이 포함되어 있어 소프트웨어 디버거가 초기화부터 코드의 정지, 디딤, 중단 등의 작업을 수행할 수 있습니다. 이러한 시설은 JTAG 지원을 사용하여 구축되지만 일부 새로운 코어는 ARM 자체의 2선 "SWD" 프로토콜을 선택적으로 지원합니다. ARM7에서TDMI 코어, "D"는 JTAG 디버그 지원을 나타내고 "I"는 "Embedded"의 존재를 나타냅니다.ICE" 디버그 모듈. ARM7 및 ARM9 코어 세대의 경우 EmbeddedICE over JTAG는 구조적으로 보장되지는 않았지만 사실상의 디버그 표준이었습니다.

ARMv7 아키텍처는 기본 디버그 기능을 아키텍처 수준에서 정의합니다. 여기에는 "디버그 모드"에서 중단점, 감시점 및 명령 실행이 포함되며, 비슷한 시설은 Embedded에서도 사용할 수 있었습니다.ICE. "정지 모드" 및 "모니터" 모드 디버깅이 모두 지원됩니다. 디버그 기능에 액세스하는 데 사용되는 실제 전송 메커니즘은 구조적으로 명시되지 않았지만 구현에는 일반적으로 JTAG 지원이 포함됩니다.

별도의 ARM "CoreSight" 디버그 아키텍처가 있는데, 이는 ARMv7 프로세서에서는 아키텍처상 필요하지 않습니다.

디버그 액세스 포트

디버그 액세스 포트(DAP)는 ARM 디버그 인터페이스의 구현입니다.[111] 지원되는 구현에는 직렬 와이어 JTAG 디버그 포트(SWJ-DP)와 직렬 와이어 디버그 포트(SW-DP) 두 가지가 있습니다.[112] CMSIS-DAP는 호스트 PC의 다양한 디버깅 소프트웨어가 USB를 통해 하드웨어 디버거에서 실행되는 펌웨어와 통신할 수 있는 방법을 설명하는 표준 인터페이스입니다. 이 인터페이스는 SWD 또는 JTAG를 통해 CoreSight 지원 ARM Cortex CPU와 대화합니다.[113][114][115]

DSP 향상 지침

디지털 신호 처리 및 멀티미디어 애플리케이션을 위한 ARM 아키텍처를 개선하기 위해 DSP 명령어를 세트에 추가했습니다.[116] 이들은 ARMv5TE 및 ARMv5TEJ 아키텍처의 이름으로 "E"로 표시됩니다. E-변량은 또한 T, D, M 및 I을 의미합니다.

새로운 지침은 디지털 신호 처리기(DSP) 아키텍처에서 일반적입니다. 여기에는 부호화된 곱셈, 포화 덧셈 뺄셈, 카운트 선행 0에 대한 변화가 포함됩니다.

멀티미디어를 위한 SIMD 확장

ARMv6 아키텍처에 도입된 이는 네온(Neon)이라는 이름의 Advanced SIMD의 전신이었습니다.[117]

자젤

Jazelle DBX(Direct Bytecode eExecution)는 자바 바이트코드를 기존의 ARM 및 썸 모드와 함께 세 번째 실행 상태(및 명령어 세트)로 ARM 아키텍처에서 직접 실행할 수 있도록 하는 기법입니다. 이 상태에 대한 지원은 ARMv5TEJ 아키텍처와 ARM9EJ-S 및 ARM7EJ-S 코어 이름에서 "J"로 표시됩니다. 새로운 코어는 하드웨어 가속 기능을 제공하지 않는 사소한 구현만 포함하지만, 이 상태에 대한 지원은 ARMv6(ARMv7-M 프로파일 제외)부터 필요합니다.

엄지

컴파일된 코드 밀도를 향상시키기 위해, ARM7 이후의 프로세서들TDMI(1994년[118] 출시)에는 자체 상태를 가진 엄지 명령 세트가 포함되어 있습니다. ("TDMI"의 "T"는 엄지손가락 기능을 나타냅니다.) 이 상태에서 프로세서는 ARM 명령어 세트의 서브셋에 대한 콤팩트한 16비트 인코딩인 썸 명령어 세트를 실행합니다.[119] 대부분의 Thumb 지침은 일반 ARM 지침과 직접 매핑됩니다. 공간 절약은 일부 명령 피연산자를 암시적으로 만들고 ARM 명령 집합 상태에서 실행되는 ARM 명령과 비교하여 가능한 수를 제한하는 데서 비롯됩니다.

엄지에서 16비트 opcode는 기능이 떨어집니다. 예를 들어, 분기만 조건부로 지정할 수 있으며 많은 opcode는 CPU의 모든 범용 레지스터의 절반만 액세스하도록 제한됩니다. 더 짧은 opcode는 일부 작업에 추가적인 명령어가 필요함에도 불구하고 전반적으로 코드 밀도를 향상시킵니다. 메모리 포트 또는 버스 폭이 32비트 미만으로 제한되는 상황에서는 제한된 메모리 대역폭을 통해 프로세서에 로드해야 하는 프로그램 코드가 더 적을 수 있기 때문에 더 짧은 썸 옵코드가 32비트 ARM 코드에 비해 성능을 높일 수 있습니다.

Cray-1 및 Hitachi SuperH와 같이 가변 길이(16비트 또는 32비트) 명령어가 있는 프로세서 아키텍처와 달리 ARM 및 썸 명령어 세트는 서로 독립적으로 존재합니다. 게임보이 어드밴스와 같은 임베디드 하드웨어는 일반적으로 32비트 전체 데이터 경로로 적은 양의 RAM에 액세스할 수 있으며 대부분은 16비트 이하의 보조 데이터 경로를 통해 액세스됩니다. 이러한 상황에서는 일반적으로 썸 코드를 컴파일하고 32비트 ARM 명령을 사용하여 가장 CPU 집약적인 섹션 중 몇 개를 손으로 최적화하여 이러한 광범위한 명령을 32비트 버스 액세스 가능 메모리에 넣는 것이 합리적입니다.

Sumb 명령어 디코더가 장착된 최초의 프로세서는 ARM7TDMI입니다. Xscale을 포함한 모든 ARM9 이상의 제품군은 Sumb 명령어 디코더를 포함하고 있습니다. 여기에는 ARM에서 라이센스를 획득한 Hitachi SuperH(1992)에서 채택한 지침이 포함되어 있습니다.[120] ARM의 가장 작은 프로세서 제품군(Cortex M0 및 M1)은 가장 낮은 비용의 애플리케이션에서 최대 성능을 발휘할 수 있도록 16비트 썸 명령어 세트만을 구현합니다.

엄지-2

엄지-2 기술은 2003년에 발표된 ARM 1156 코어에 도입되었습니다. Thumb-2는 추가적인 32비트 명령어와 함께 Thumb의 제한된 16비트 명령어 세트를 확장하여 명령어 세트에 더 많은 폭을 제공하므로 가변 길이 명령어 세트를 생성합니다. Sumb-2의 명시된 목표는 32비트 메모리에 설정된 ARM 명령어와 유사한 성능으로 Sumb와 유사한 코드 밀도를 달성하는 것이었습니다.

엄지-2는 비트 필드 조작, 테이블 분기 및 조건부 실행으로 엄지 명령 세트를 확장합니다. 동시에 ARM 명령어 세트를 확장하여 두 명령어 세트에서 동등한 기능을 유지하도록 했습니다. 새로운 "Unified Assembly Language" (UAL)은 동일한 소스 코드로부터 썸 또는 ARM 명령어의 생성을 지원합니다. ARMv7 프로세서에서 볼 수 있는 썸 버전은 기본적으로 ARM 코드(인터럽트 핸들러 쓰기 기능 포함)만큼 가능합니다. 이를 위해서는 약간의 주의와 새로운 "IT"(if-then) 명령어를 사용해야 합니다. 이 명령어는 테스트된 조건에 따라 또는 그 역순으로 최대 4개의 연속적인 명령어를 실행할 수 있습니다. ARM 코드로 컴파일할 때는 무시되지만 Thumb으로 컴파일하면 실제 명령어가 생성됩니다. 예:

; if (r0 == r1) CMP r0, r1 ITE EQ        ; 코드 없음... 엄지: IT 교육 ; then r0 = r2; 무브큐 r0, r2  ; 조건부; 엄지: ITE 'T'를 통한 상태(그때) ; else r0 = r3; 모브네 r0, r3  ; 조건부; 엄지: ITE 'E'를 통한 상태(기타) ; Thumb MOV 명령에는 "EQ" 또는 "NE"를 인코딩할 비트가 없음을 기억하십시오. 

모든 ARMv7 칩은 엄지 명령어 세트를 지원합니다. Cortex-A 시리즈, Cortex-R 시리즈, ARM11 시리즈의 모든 칩은 "ARM 명령어 세트 상태"와 "썸 명령어 세트 상태"를 모두 지원하는 반면, Cortex-M 시리즈의 칩은 썸 명령어 세트만 지원합니다.[121][122][123]

Thumb Execution Environment(엄지 실행 환경)

Jazelle RCT[124](Runtime Compilitation Target)로 판매되었던 ThumbEE(일부 ARM 문서에서 Sumb-2EE라고 잘못 불림)는 2005년에 발표되었고 2011년에 폐지되었습니다. Cortex-A8 프로세서에서 처음 등장했습니다. ThumbEE는 Thumb-2 확장 명령 집합에 작은 변화를 주는 네 번째 명령 집합 상태입니다. 이러한 변경 사항으로 인해 명령 집합은 관리되는 실행 환경에서 런타임에 생성되는 코드(예: JIT 컴파일)에 특히 적합합니다. ThumbEE는 Java, C#, Perl, Python 등의 언어를 대상으로 하며 JIT 컴파일러가 성능 저하 없이 더 작은 컴파일 코드를 출력할 수 있도록 합니다.[citation needed]

ThumbEE가 제공하는 새로운 기능에는 모든 로드 및 스토어 명령에 대한 자동 널 포인터 검사, 어레이 경계 검사를 수행하는 명령 및 핸들러를 호출하는 특수 명령이 포함됩니다. 또한 ThumbEE는 Thumb-2 기술을 활용하기 때문에 레지스터 r8–r15(Jazelle/DBX Java VM 상태가 유지되는 곳)에 액세스할 수 있습니다.[125] 핸들러는 자주 호출되는 코드의 작은 섹션으로, 일반적으로 새 개체에 대한 메모리 할당과 같은 고급 언어를 구현하는 데 사용됩니다. 이러한 변경 사항은 소수의 opcode의 용도를 변경하고 코어가 새로운 SumbEE 상태에 있다는 것을 아는 데서 비롯됩니다.

2011년 11월 23일, Arm은 ThumbEE 명령어 세트의 사용을 중단했고,[126] Armv8은 ThumbEE에 대한 지원을 제거했습니다.

부동 소수점(VFP)

VFP(Vector Floating Point) 기술은 ARM 아키텍처에[127] 대한 FPU(Floating Point Unit) 코프로세서 확장입니다(Armv8에서 다르게 구현됨 – 코프로세서는 정의되지 않음). 제품은 이진 부동 소수점 산술을 위한 ANSI/IEEE Std 754-1985 표준을 완벽하게 준수하는 저비용 단일 정밀도 및 이중 정밀 부동 소수점 계산을 제공합니다. VFP는 PDA, 스마트폰, 음성 압축 및 압축 해제, 3차원 그래픽 및 디지털 오디오, 프린터, 셋톱 박스 및 자동차 애플리케이션과 같은 광범위한 응용 분야에 적합한 부동 소수점 계산을 제공합니다. VFP 아키텍처는 짧은 "벡터 모드" 명령의 실행을 지원하기 위한 것이었지만 이러한 명령은 각 벡터 요소에서 순차적으로 작동하므로 진정한 단일 명령, 다중 데이터(SIMD) 벡터 병렬의 성능을 제공하지 못했습니다. 따라서 이 벡터 모드는 도입 직후 제거되어 [128]훨씬 강력한 네온(Neon)이라는 이름의 고급 SIMD로 대체되었습니다.

ARM Cortex-A8과 같은 일부 장치에는 전체 VFP 모듈 대신 컷다운 VFPLite 모듈이 있으며 플로트 작업당 약 10배 이상의 클럭 사이클이 필요합니다.[129] 이전의 Armv8 아키텍처는 코프로세서 인터페이스로 부동 소수점/SIMD를 구현했습니다. 코프로세서 인터페이스를 사용하는 ARM 기반 프로세서에서 발견되는 다른 부동 소수점 및/또는 SIMD 유닛에는 FPA, FPE, iwMMXt가 있으며, 이들 중 일부는 트래핑에 의해 소프트웨어로 구현되었지만 하드웨어로 구현될 수 있었습니다. VFP와 동일한 기능 중 일부를 제공하지만 이 기능과 호환되지는 않습니다. FPA10은 또한 확장된 정밀도를 제공하지만 단일 정밀도에서만 올바른 반올림(IEEE 754에서 요구)을 구현합니다.[130]

VFPv1
쓸모없는
VFPv2
ARMv5TE, ARMv5TEJ 및 ARMv6 아키텍처에 설정된 ARM 명령어에 대한 옵션 확장입니다. VFPv2에는 16개의 64비트 FPU 레지스터가 있습니다.
VFPv3 or VFPv3-D32
대부분의 Cortex-A8 및 A9 ARMv7 프로세서에 구현됩니다. 부동 소수점 예외를 트랩할 수 없다는 점을 제외하고는 VFPv2와 하위 호환성이 있습니다. VFPv3에는 표준으로 32개의 64비트 FPU 레지스터가 있으며, 스칼라, 플로트 및 더블 간 변환을 위한 VCVT 명령을 추가하고 VMOV에 즉시 모드를 추가하여 상수를 FPU 레지스터에 로드할 수 있습니다.
VFPv3-D16
위와 같이 64비트 FPU 레지스터는 16개만 있습니다. Cortex-R4 및 R5 프로세서와 Tegra 2(Cortex-A9)에 구현됩니다.
VFPv3-F16
흔하지 않지만 스토리지 형식으로 IEEE 754-2008 반정밀(16비트) 부동 소수점을 지원합니다.
VFPv4 or VFPv4-D32
Cortex-A12 및 A15 ARMv7 프로세서에 구현된 Cortex-A7은 Neon과 함께 FPU인 경우 VFPv4-D32를 선택적으로 사용할 수 있습니다.[131] VFPv4는 표준으로 32개의 64비트 FPU 레지스터를 갖추고 있으며, 스토리지 형식으로 반정밀 지원과 VFPv3의 기능에 융합된 다중 누적 명령을 모두 추가합니다.
VFPv4-D16
위와 같이 64비트 FPU 레지스터는 16개에 불과합니다. 네온이 없는 FPU의 경우 Cortex-A5 및 A7 프로세서에서 구현됩니다.[131]
VFPv5-D16-M
단일 및 이중 정밀 부동 소수점 코어 옵션이 존재하는 경우 Cortex-M7에서 구현됩니다.

데비안 리눅스우분투, 리눅스 민트와 같은 파생 제품에서 armhf(ARM 하드플로트)는 위의 추가 VFP3-D16 부동 소수점 하드웨어 확장(및 Thumb-2)을 포함하는 ARMv7 아키텍처를 의미합니다. 소프트웨어 패키지와 크로스 컴파일러 도구는 armhf vs. arm/armel 접미사를 사용하여 구별합니다.[132]

고급 SIMD(네온)

고급 SIMD 확장(Neon 또는 "MPE" Media Processing Engine)은 미디어 및 신호 처리 응용 프로그램을 위한 표준화된 가속 기능을 제공하는 64비트 및 128비트 SIMD 명령 세트입니다. 네온은 모든 Cortex-A8 장치에 포함되어 있지만 Cortex-A9 장치에서는 선택 사항입니다.[133] 네온은 10MHz에서 동작하는 CPU에서 MP3 오디오 디코딩을 실행할 수 있으며, 13MHz에서 GSM AMR(adaptive multi-rate) 음성 코덱을 실행할 수 있습니다. 포괄적인 명령어 세트, 별도의 레지스터 파일, 독립 실행 하드웨어가 특징입니다.[134] 네온은 8비트, 16비트, 32비트, 64비트 정수 및 단일 정밀도(32비트) 부동 소수점 데이터 및 SIMD 작업을 지원하여 오디오 및 비디오 처리는 물론 그래픽 및 게임 처리도 처리할 수 있습니다. 네온에서 SIMD는 동시에 최대 16개의 작업을 지원합니다. 네온 하드웨어는 VFP에서 사용되는 것과 동일한 부동 소수점 레지스터를 공유합니다. ARM Cortex-A8 및 Cortex-A9와 같은 장치는 128비트 벡터를 지원하지만 한 번에 64비트로 실행되는 [129]반면 새로운 Cortex-A15 장치는 한 번에 128비트를 실행할 수 있습니다.[135][136]

Armv7 디바이스에서 네온의 특이한 점은 모든 하위 정상 숫자를 0으로 플러싱하고 결과적으로 GCC 컴파일러는 그렇지 않으면 사용하지 않을 것이라는 것입니다. -funsafe-math-optimizations, 정상을 잃을 수 있는 전원이 켜집니다. Armv8부터 정의된 "향상된" 네온에는 이 quirk가 없지만 GCC 8.2에서는 여전히 네온 지침을 활성화하려면 동일한 플래그가 필요합니다.[137] 반면, GCC는 Armv8의 경우 AArch64에서 Neon을 안전하다고 생각합니다.

프로젝트 Ne10(프로젝트 Ne10)은 ARM의 첫 오픈 소스 프로젝트입니다. (초기에 Mbed TLS라는 이름의 오래된 프로젝트를 인수했지만). Ne10 라이브러리는 (호환을 위해) Neon과 C로 작성된 일반적이고 유용한 기능들의 집합입니다. 라이브러리는 개발자들이 네온을 배우지 않고도 네온 최적화를 사용할 수 있도록 만들어졌지만, 일반적인 DSP, 산술 및 이미지 처리 루틴에 대해 매우 최적화된 네온 고유 및 어셈블리 코드 예제의 역할도 합니다. 소스 코드는 GitHub에서 사용할 수 있습니다.[138]

ARM 헬륨 기술

헬륨은 M-Profile Vector Extension(MVE)입니다. 150개 이상의 스칼라 및 벡터 명령을 추가합니다.[139]

보안 확장

신뢰 영역(Cortex-A 프로파일용)

TrustZone Technology로 판매되는 Security Extensions는 ARMv6KZ 이상의 애플리케이션 프로파일 아키텍처에 있습니다. 하드웨어 기반 액세스 제어로 지원되는 가상 프로세서 2개를 제공함으로써 SoC에 다른 전용 보안 코어를 추가하는 비용이 적게 드는 대안을 제공합니다. 이를 통해 애플리케이션 코어는 월드(기능 도메인의 다른 이름과의 혼동을 줄이기 위해)라고 하는 두 상태 사이를 전환하여 더 신뢰할 수 있는 월드에서 덜 신뢰할 수 있는 월드로 정보가 유출되는 것을 방지할 수 있습니다. 이 세계 스위치는 일반적으로 프로세서의 다른 모든 기능과 직교하므로 각 세계는 동일한 코어를 사용하면서 서로 독립적으로 작동할 수 있습니다. 그런 다음 메모리와 주변 장치가 코어의 작동 세계를 인식하고 이를 사용하여 장치의 비밀과 코드에 대한 액세스 제어를 제공할 수 있습니다.[140]

일반적으로 신뢰도가 낮은 세계에서 풍부한 운영 체제가 실행되고, 더 신뢰도가 높은 세계에서 더 작은 보안 전문 코드가 실행되어 공격 표면을 줄이는 것을 목표로 합니다. 일반적인 응용 프로그램에는 ARM 기반 장치에서 미디어 사용을 [141]제어하고 장치의 승인되지 않은 사용을 방지하기 위한 DRM 기능이 포함됩니다.

실제적으로 독점적인 TrustZone 구현의 구체적인 구현 내역은 공개적으로 공개되지 않았기 때문에 주어진 위협 모델에 대해 어떤 수준의 보장이 제공되는지는 불분명하지만 공격으로부터 자유롭지는 않습니다.[142][143]

Open Virtualization은[144] TrustZone을 위한 신뢰할 수 있는 세계 아키텍처의 오픈 소스 구현입니다.

AMD는 TrustZone 기술을 Secure Processor 기술에 라이센스를 부여하고 통합했습니다.[145] AMD의 APU에는 보안 처리를 위한 Cortex-A5 프로세서가 포함되어 있습니다.[146][147][148] 사실 Cortex-A5 TrustZone 코어는 이전 AMD 제품에 포함되어 있었지만 시간 제약으로 인해 활성화되지 않았습니다.[147]

삼성 녹스는 커널의 수정 사항 탐지, 인증서 저장 및 키 증명과 같은 목적으로 트러스트존을 사용합니다.[149]

Armv8-M용 신뢰 영역(Cortex-M 프로파일용)

Armv8-M Technology의 TrustZone으로 판매된 보안 확장 기능은 Armv8-M 아키텍처에 도입되었습니다. TrustZone for Armv8-A와 유사한 개념을 포함하고 있지만 예외를 사용하는 대신 분기 명령을 사용하여 월드 스위칭을 수행하기 때문에 아키텍처 설계가 다릅니다. 또한 현재 보안 상태에 관계없이 두 세계 모두에서 안전한 인터리브 인터럽트 처리를 지원합니다. 이러한 기능을 함께 사용하면 보안 세계에 대한 낮은 대기 시간 호출과 응답적인 인터럽트 처리를 제공할 수 있습니다. ARM은 신뢰할 수 있는 펌웨어 for M 및 PSA Certified의 형태로 보안 세계 코드의 참조 스택을 제공합니다.

실행되지 않는 페이지 보호

ARMv6에서 ARM 아키텍처는 eExecute Never에 대해 XN이라고 하는 no-execute 페이지 보호를 지원합니다.[150]

LPAE(Large Physical Address Extension)

물리 주소 크기를 32비트에서 40비트로 확장하는 LPAE(Large Physical Address Extension)가 2011년 Armv7-A 아키텍처에 추가되었습니다.[151]

물리적 주소 크기는 64비트(Armv8-A) 아키텍처를 기반으로 하는 프로세서에서 훨씬 더 클 수 있습니다. 예를 들어 Cortex-A75 및 Cortex-A65에서 44비트입니다.AE.[152]

Armv8-R and Armv8-M

Armv8-A 아키텍처 이후 발표된 Armv8-RArmv8-M 아키텍처는 Armv8-A와 일부 기능을 공유합니다. 그러나 Armv8-M에는 64비트 AArch64 명령이 포함되어 있지 않으며 Armv8-R에는 원래 AArch64 명령이 포함되어 있지 않습니다. 이러한 명령은 나중에 Armv8-R에 추가되었습니다.

Armv8.1-M

2019년 2월에 발표된 Armv8.1-M 아키텍처는 Armv8-M 아키텍처의 향상된 기능입니다. 다음을 포함한 새로운 기능을 제공합니다.

  • 새 벡터 명령 집합 확장자입니다. MVE(M-Profile Vector Extension) 또는 Helium은 신호 처리 및 기계 학습 애플리케이션을 위한 것입니다.
  • 루프 및 분기에 대한 추가 지침 세트 향상(낮은 오버헤드 분기 확장).
  • 반정밀 부동 소수점 지지에 대한 지침입니다.
  • FPU(Floating Point Unit)에 대한 TrustZone 관리를 위한 지침 세트 향상.
  • MPU(Memory Protection Unit)의 새 메모리 특성.
  • PMU(Performance Monitoring Unit), Unexputed Debug Extension(비특권 디버그 확장) 및 추가 디버그 지원을 포함한 디버그의 향상된 기능은 신호 처리 응용 프로그램 개발에 초점을 맞추고 있습니다.
  • RAS(신뢰성, 가용성 및 서비스 가능성) 확장.

64/32비트 아키텍처

Armv8-A Cortex A57/A53 MPC 큰 플랫폼.Little CPU 칩

Armv8

Armv8-A

2011년 10월에 발표된 Armv8-A([14]종종 ARMv8이라고 함과 동시에 Armv8-R도 사용 가능)는 ARM 아키텍처의 근본적인 변화를 나타냅니다. "라는 이름의 64비트 아키텍처(옵션)를 추가합니다.AArch64"와 관련된 새로운 "A64" 명령어 세트. AArch64는 32비트 아키텍처인 Armv7-A와의 사용자 공간 호환성을 제공합니다.AArch32"와 현재 "A32"로 명명된 이전 32비트 명령어 세트. 엄지 명령 집합을 "T32"라고 하며 64비트 대응 집합은 없습니다. Armv8-A는 32비트 애플리케이션을 64비트 OS에서 실행하고, 32비트 OS는 64비트 하이퍼바이저의 제어 하에 둘 수 있도록 합니다.[1] ARM은 2012년 10월 30일 Cortex-A53과 Cortex-A57 코어를 발표했습니다.[74] 애플은 소비자 제품에 Armv8-A 호환 코어를 최초로 출시했습니다(아이폰 5S애플 A7). Applied MicroFPGA를 사용하여 Armv8-A를 최초로 데모했습니다.[153] 삼성의 첫 번째 Armv8-A SoC갤럭시 노트 4에 사용된 엑시노스 5433으로, 4개의 Cortex-A57과 Cortex-A53 코어로 구성된 두 개의 클러스터가 큰 특징을 가지고 있습니다.구성은 거의 없지만 AArch32 모드에서만 실행됩니다.[154]

Armv8-A는 AArch32와 AArch64 모두에 VFPv3/v4와 고급 SIMD(Neon) 표준을 만듭니다. 또한 AES, SHA-1/SHA-256유한장 산술을 지원하는 암호학 명령을 추가합니다.[155] AArch64는 Armv8-A와 그 이후의 개정판에 도입되었습니다. AArch64는 32비트 Armv8-R 및 Armv8-M 아키텍처에 포함되지 않습니다.

Armv8-R

Armv8-R 프로파일에는 옵션인 AArch64 지원이 추가되었으며, 이를 구현하는 첫 번째 ARM 코어는 Cortex-R82입니다.[156] A64 설명서 세트를 추가합니다.

Armv9

Armv9-A

2021년 3월에 발표된 업데이트된 아키텍처는 안전한 실행과 구획 정리에 초점을 맞추고 있습니다.[157][158]

암 시스템 준비 완료

Arm SystemReady(이전 이름: Arm ServerReady)는 일반적인 기성 운영 체제와 하이퍼바이저를 Arm 기반 시스템에서 데이터 센터 서버에서 산업용 에지 및 IoT 장치에 이르기까지 연결할 수 있도록 지원하는 인증 프로그램입니다. 프로그램의 주요 구성 요소는 운영 체제와 하이퍼바이저가 의존할 수 있는 최소 하드웨어 및 펌웨어 요구 사항에 대한 사양입니다. 이러한 사양은 다음과 같습니다.

이러한 사양은 Arm과 시스템 아키텍처 자문 위원회(SystemArchAC)의 파트너들이 공동 개발한 것입니다.

ACS(Architecture Compliance Suite)는 이러한 사양의 준수 여부를 확인하는 데 도움이 되는 테스트 도구입니다. 시스템 준비 요구 사항 사양서는 인증의 요구 사항을 문서화합니다.

이 프로그램은 Arm이 2020년 첫 DevSummit 행사에서 선보인 프로그램입니다. 전작인 Arm ServerReady는 Arm TechCon 행사에서 2018년에 선보였습니다. 이 프로그램은 현재 4개의 밴드를 포함하고 있습니다.

  • SystemReady SR: 이 밴드는 UEFI, ACPISMBIOS 인터페이스를 기대하는 운영 체제 및 하이퍼바이저를 지원하는 서버 및 워크스테이션용입니다. Windows, Red Hat Enterprise Linux 및 VMware ESXi-Arm에는 이러한 인터페이스가 필요하며 다른 Linux 및 BSD 디스트로도 지원할 수 있습니다.[clarification needed]
  • SystemReady LS(LinuxBoot System): 이 대역은 하이퍼스케일러가 ACPI 및 SMBIOS 인터페이스와 함께 LinuxBoot 펌웨어를 기대하는 Linux 운영 체제를 지원하는 데 사용하는 서버용입니다.
  • SystemReady ES(Embedded System): 이 대역은 UEFI, ACPI 및 SMBIOS 인터페이스를 기대하는 운영 체제 및 하이퍼바이저를 지원하는 산업용 에지 및 IoT 장치를 위한 것입니다. Windows IoT Enterprise, Red Hat Enterprise Linux 및 VMware ESXi-Arm에는 이러한 인터페이스가 필요하며 다른 Linux 및 BSD 디스트로도 지원할 수 있습니다.[clarification needed]
  • SystemReady IR(IoT Ready): 이 밴드는 UEFI 및 디바이스 트리 인터페이스를 기대하는 운영 체제를 지원하는 산업용 에지 및 IoT 장치를 위한 것입니다. 임베디드 리눅스(: Yocto) 및 일부 리눅스/BSD distros(예: Fedora, Ubuntu, Debian 및 OpenSUSE)도 지원할 수 있습니다.[clarification needed]

PSA 인증됨

이전 이름은 플랫폼 보안 아키텍처(Platform Security Architecture)인 PSA Certified는 아키텍처에 구애 받지 않는 보안 프레임워크 및 평가 체계입니다. SoC(system on a chip) 프로세서에 구축된 사물인터넷(IoT) 기기의 보안을 돕기 위한 것입니다.[159] 완전한 신뢰할 수 있는 실행 환경이 너무 크거나 복잡한 경우 보안을 강화하기 위해 도입되었습니다.[160]

Arm은 2017년 연례 TechCon 행사에서 이 아키텍처를 소개했습니다.[160][161] 이 방식은 아키텍처에 구애받지 않지만 마이크로컨트롤러 사용을 목적으로 하는 Arm Cortex-M 프로세서 코어에서 처음 구현되었습니다. PSA Certified에는 일반 IoT 제품에서 보안 기능을 결정하는 과정을 보여주는 자유롭게 사용할 수 있는 위협 모델과 보안 분석이 포함되어 있습니다.[162] 또한 자유롭게 다운로드 가능한 API(Application Programming Interface) 패키지, 아키텍처 사양, 오픈 소스 펌웨어 구현 및 관련 테스트 제품군을 제공합니다.[163]

2017년 아키텍처 보안 프레임워크 개발에 이어 2년 후인 2019년 Embedded World에서 PSA [164]Certified Assurance 계획이 시작되었습니다. PSA Certified는 칩 공급업체, OS 공급업체 및 IoT 기기 제조업체를 위한 다단계 보안 평가 체계를 제공합니다.[165] Embedded World 프레젠테이션에서는 칩 공급업체에 레벨 1 인증을 소개했습니다. 레벨 2 보호 초안이 동시에 제시되었습니다.[166] 레벨 2 인증은 2020년 2월에 사용 가능한 표준이 되었습니다.[167]

이 인증은 PSA 공동 이해 관계자가 다양한 IoT 제품 세트에 대한 보안별 접근 방식을 가능하게 하기 위해 만든 것입니다. PSA 인증 사양은 구현 및 아키텍처에 구애받지 않으므로 모든 칩, 소프트웨어 또는 장치에 적용할 수 있습니다.[168][166] 또한 이 인증은 IoT 제품 제조업체와 개발업체의 산업 파편화를 제거합니다.[169]

운영체제 지원

32비트 운영 체제

과거 운영 체제

최초의 32비트 ARM 기반 개인용 컴퓨터인 Acorn Archimedes는 원래 ARX라는 야심찬 운영 체제를 실행하기 위한 것이었습니다. RISC OS와 함께 제공되는 기계는 이후 ARM 기반의 ARC 시스템에도 사용되었습니다. 일부 초기 에이콘 머신들은 또한 RISC iX라는 유닉스 포트를 실행할 수 있었습니다. (또한 MIPS 아키텍처를 위한 현대 유닉스 변형인 RISC/os와 혼동해서는 안 됩니다.)

임베디드 운영 체제

32비트 ARM 아키텍처는 다음과 같은 수많은 임베디드실시간 운영 체제에서 지원됩니다.

모바일 장치 운영 체제

32비트 ARM 아키텍처는 다음과 같은 대부분의 모바일 장치 운영 체제의 주요 하드웨어 환경입니다.

이전에는 중단되었으나 현재는 중단되었습니다.

데스크톱 및 서버 운영 체제

32비트 ARM 아키텍처는 RISC OS와 다음과 같은 여러 유닉스 계열 운영 체제에 의해 지원됩니다.

64비트 운영 체제

임베디드 운영 체제

모바일 장치 운영 체제

데스크톱 및 서버 운영 체제

32비트 또는 64비트 ARM 운영 체제로 포팅

Wine 프로젝트의 Winelib과 연결된 ARM용으로 재컴파일된 Windows 응용 프로그램은 Linux, FreeBSD 또는 기타 호환 운영 체제에서 32비트 또는 64비트 ARM에서 실행할 수 있습니다.[198][199] 예를 들어, ARM용으로 특별히 컴파일되지 않은 경우, x86 바이너리는 QEMU with Wine(Linux 등)[citation needed]을 사용하여 ARM에서 시연되었지만, Winelib(위넬리브)에서와 같은 최대 속도 또는 동일한 기능으로 작동하지는 않습니다.

메모들

  1. ^ 32비트 워드를 사용하면 4Mbit/초가 1MIPS에 해당합니다.
  2. ^ 사용 가능한 참고 자료에는 이것이 어느 디자인 팀이었는지는 언급되어 있지 않지만, 그 시대 디자인의 시기와 알려진 역사를 고려할 때, 이것은 NS32016이 많은 수의 버그에 시달렸던 국가 반도체 팀이었을 가능성이 높습니다.
  3. ^ Matt Evans는 더 빠른 버전은 단순히 더 높게 빈 상태로 표시되며, 근본적인 변경 사항은 없는 것으로 보인다고 지적했습니다.[36]

참고 항목

참고문헌

인용

  1. ^ a b c d e f Grisenthwaite, Richard (2011). "ARMv8-A Technology Preview" (PDF). Archived from the original (PDF) on 11 November 2011. Retrieved 31 October 2011.
  2. ^ "Procedure Call Standard for the ARM Architecture" (PDF). Arm Holdings. 30 November 2013. Retrieved 27 May 2013.
  3. ^ a b Wilson, Roger (2 November 1988). "Some facts about the Acorn RISC Machine". Newsgroup: comp.arch. Retrieved 25 May 2007.
  4. ^ a b Hachman, Mark (14 October 2002). "ARM Cores Climb into 3G Territory". ExtremeTech. Retrieved 24 May 2018.
  5. ^ Turley, Jim (18 December 2002). "The Two Percent Solution". Embedded. Retrieved 14 February 2023.
  6. ^ Cutress, Ian (22 June 2020). "New #1 Supercomputer: Fujitsu's Fugaku and A64FX take Arm to the Top with 415 PetaFLOPs". anandtech.com. Retrieved 25 January 2021.
  7. ^ "Arm Partners Have Shipped 200 Billion Chips". Arm (Press release). Retrieved 3 November 2021.
  8. ^ "Architecting a smart world and powering Artificial Intelligence: ARM". The Silicon Review. 2019. Retrieved 8 April 2020.
  9. ^ "Enabling Mass IoT connectivity as ARM partners ship 100 billion chips". community.arm.com. Retrieved 8 April 2020. the cumulative deployment of 100 billion chips, half of which shipped in the last four years. [..] why not a trillion or more? That is our target, seeing a trillion connected devices deployed over the next two decades.
  10. ^ "MCU Market on Migration Path to 32-bit and ARM-based Devices: 32-bit tops in sales; 16-bit leads in unit shipments". IC Insights. 25 April 2013. Retrieved 1 July 2014.
  11. ^ Turley, Jim (2002). "The Two Percent Solution". embedded.com.
  12. ^ "Arm Holdings eager for PC and server expansion". The Register. 1 February 2011.
  13. ^ McGuire-Balanza, Kerry (11 May 2010). "ARM from zero to billions in 25 short years". Arm Holdings. Retrieved 8 November 2012.
  14. ^ a b "ARM Discloses Technical Details of the Next Version of the ARM Architecture" (Press release). Arm Holdings. 27 October 2011. Archived from the original on 1 January 2019. Retrieved 20 September 2013.
  15. ^ "Announcing the ARM Neoverse N1 Platform". community.arm.com. Retrieved 8 April 2020.
  16. ^ Fairbairn, Douglas (31 January 2012). "Oral History of Sophie Wilson" (PDF). Archived (PDF) from the original on 3 March 2016. Retrieved 2 February 2016.
  17. ^ Smith, Tony (30 November 2011). "The BBC Micro turns 30". The Register Hardware. Archived from the original on 12 December 2011. Retrieved 12 December 2011.
  18. ^ Polsson, Ken. "Chronology of Microprocessors". Processortimeline.info. Archived from the original on 9 August 2018. Retrieved 27 September 2013.
  19. ^ Leedy, Glenn (April 1983). "The National Semiconductor NS16000 Microprocessor Family". Byte. pp. 53–66. Retrieved 22 August 2020.
  20. ^ 에번스 2019, 6시.
  21. ^ Manners, David (29 April 1998). "ARM's way". Electronics Weekly. Archived from the original on 29 July 2012. Retrieved 26 October 2012.
  22. ^ 에반스 2019, 5시 30분.
  23. ^ a b 에반스 2019, 7시 45분
  24. ^ 에반스 2019년 8시 30분
  25. ^ Sophie Wilson at Alt Party 2009 (Part 3/8). Archived from the original on 11 December 2021.
  26. ^ Chisnall, David (23 August 2010). Understanding ARM Architectures. Retrieved 26 May 2013.
  27. ^ 에반스 2019년 9시.
  28. ^ Furber, Stephen B. (2000). ARM system-on-chip architecture. Boston: Addison-Wesley. ISBN 0-201-67519-6.
  29. ^ 에반스 2019 9시 50분
  30. ^ 에반스 2019년 23시 30분
  31. ^ 에반스 2019, 26:00
  32. ^ "ARM Instruction Set design history with Sophie Wilson (Part 3)". 10 May 2015. Archived from the original on 11 December 2021. Retrieved 25 May 2020 – via YouTube.
  33. ^ "Oral History of Sophie Wilson – 2012 Computer History Museum Fellow" (PDF). Computer History Museum. 31 January 2012. Retrieved 25 May 2020.
  34. ^ Harker, T. (Summer 2009). "ARM gets serious about IP (Second in a two-part series [Associated Editors' View]". IEEE Solid-State Circuits Magazine. 1 (3): 8–69. doi:10.1109/MSSC.2009.933674. ISSN 1943-0590. S2CID 36567166.
  35. ^ 에반스 2019, 20:30.
  36. ^ 에반스 2019년 22시
  37. ^ 에반스 2019년 21시 30분
  38. ^ 에반스 2019년 22:0030
  39. ^ a b 에반스 2019년 14시
  40. ^ "From one Arm to the next! ARM Processors and Architectures". Retrieved 31 May 2022.
  41. ^ Levy, Markus. "The History of The ARM Architecture: From Inception to IPO" (PDF). Retrieved 18 July 2022.
  42. ^ Introducing the Commodore Amiga 3000 (PDF). Commodore-Amiga, Inc. 1991.
  43. ^ "Computer MIPS and MFLOPS Speed Claims 1980 to 1996". www.roylongbottom.org.uk. Retrieved 17 June 2023.
  44. ^ Santanu Chattopadhyay (2010). Embedded System Design. PHI Learning Pvt. Ltd. p. 9. ISBN 978-81-203-4024-4.
  45. ^ Richard Murray. "32 bit operation".
  46. ^ "ARM Company Milestones". ARM. Archived from the original on 20 April 2015. Retrieved 8 April 2015.
  47. ^ Andrews, Jason (2005). "3 SoC Verification Topics for the ARM Architecture". Co-verification of hardware and software for ARM SoC design. Oxford, UK: Elsevier. pp. 69. ISBN 0-7506-7730-9. ARM started as a branch of Acorn Computer in Cambridge, England, with the formation of a joint venture between Acorn, Apple and VLSI Technology. A team of twelve employees produced the design of the first ARM microprocessor between 1983 and 1985.
  48. ^ Weber, Jonathan (28 November 1990). "Apple to Join Acorn, VLSI in Chip-Making Venture". Los Angeles Times. Los Angeles. Retrieved 6 February 2012. Apple has invested about $3 million (roughly 1.5 million pounds) for a 30% interest in the company, dubbed Advanced Risc Machines Ltd. (ARM) [...]
  49. ^ "ARM Corporate Backgrounder" (PDF). ARM. Archived from the original (PDF) on 4 October 2006.
  50. ^ Montanaro, James; et al. (1997). "A 160-MHz, 32-b, 0.5-W CMOS RISC Microprocessor" (PDF). Digital Technical Journal. 9 (1): 49–62.
  51. ^ DeMone, Paul (9 November 2000). "ARM's Race to Embedded World Domination". Real World Technologies. Retrieved 6 October 2015.
  52. ^ "March of the Machines". technologyreview.com. MIT Technology Review. 20 April 2010. Archived from the original on 16 October 2015. Retrieved 6 October 2015.
  53. ^ Krazit, Tom (3 April 2006). "ARMed for the living room". CNET.
  54. ^ Tracy Robinson (12 February 2014). "Celebrating 50 Billion shipped ARM-powered Chips".
  55. ^ Sarah Murry (3 March 2014). "ARM's Reach: 50 Billion Chip Milestone". Archived from the original on 16 September 2015.
  56. ^ Brown, Eric (2009). "ARM netbook ships with detachable tablet". Archived from the original on 3 January 2013. Retrieved 19 August 2009.
  57. ^ Peter Clarke (7 January 2016). "Amazon Now Sells Own ARM chips".
  58. ^ "MACOM Successfully Completes Acquisition of AppliedMicro" (Press release). 26 January 2017.
  59. ^ Frumusanu, Andrei. "ARM Details Built on ARM Cortex Technology License". AnandTech. Retrieved 26 May 2019.
  60. ^ Cutress, Ian. "ARM Flexible Access: Design the SoC Before Spending Money". AnandTech. Retrieved 9 October 2019.
  61. ^ "ARM Flexible Access Frequently Asked Questions". ARM. Retrieved 9 October 2019.
  62. ^ Nolting, Stephan. "STORM CORE Processor System" (PDF). OpenCores. Retrieved 1 April 2014.
  63. ^ GitHub에서 ZAP
  64. ^ "Cortex-M23 Processor". ARM. Retrieved 27 October 2016.
  65. ^ "Cortex-M33 Processor". ARM. Retrieved 27 October 2016.
  66. ^ "ARMv8-M Architecture Simplifies Security for Smart Embedded". ARM. Retrieved 10 November 2015.
  67. ^ Ltd, Arm. "M-Profile Architectures". Arm The Architecture for the Digital World. Retrieved 29 August 2023.
  68. ^ "ARMv8-R Architecture". Retrieved 10 July 2015.
  69. ^ Craske, Simon (October 2013). "ARM Cortex-R Architecture" (PDF). Arm Holdings. Archived from the original (PDF) on 6 April 2014. Retrieved 1 February 2014.
  70. ^ Smith, Ryan (20 September 2016). "ARM Announces Cortex-R52 CPU: Deterministic & Safe, for ADAS & More". AnandTech. Retrieved 20 September 2016.
  71. ^ "Cortex-A32 Processor". ARM. Retrieved 10 October 2019.
  72. ^ "Cortex-A35 Processor". ARM. Retrieved 10 November 2015.
  73. ^ a b "ARM Launches Cortex-A50 Series, the World's Most Energy-Efficient 64-bit Processors" (Press release). Arm Holdings. Retrieved 31 October 2012.
  74. ^ "Cortex-A72 Processor". ARM. Retrieved 10 July 2015.
  75. ^ "Cortex-A73 Processor". ARM. Retrieved 2 June 2016.
  76. ^ "ARMv8-A Architecture". Retrieved 10 July 2015.
  77. ^ "Cavium Thunder X ups the ARM core count to 48 on a single chip". SemiAccurate. 3 June 2014.
  78. ^ "Cavium at Supercomputing 2014". Yahoo Finance. 17 November 2014. Archived from the original on 16 October 2015. Retrieved 15 January 2017.
  79. ^ Burt, Jeff (17 November 2014). "Cray to Evaluate ARM Chips in Its Supercomputers". eWeek.
  80. ^ "Samsung Announces Exynos 8890 with Cat.12/13 Modem and Custom CPU". AnandTech.
  81. ^ "Cortex-A34 Processor". ARM. Retrieved 10 October 2019.
  82. ^ "D21500 [AARCH64] Add support for Broadcom Vulcan". reviews.llvm.org.
  83. ^ "Cortex-A55 Processor". ARM. Retrieved 29 May 2017.
  84. ^ "Cortex-A75 Processor". ARM. Retrieved 29 May 2017.
  85. ^ "Cortex-A76 Processor". ARM. Retrieved 11 October 2018.
  86. ^ Berenice Mann (April 2017). "ARM Architecture – ARMv8.2-A evolution and delivery". community.ARM.com.
  87. ^ Frumusanu, Andrei. "Samsung Announces the Exynos 9825 SoC: First 7nm EUV Silicon Chip". AnandTech. Retrieved 11 October 2019.
  88. ^ "Fujitsu began to produce Japan's billions of super-calculations with the strongest ARM processor A64FX". China IT News. Archived from the original on 20 June 2019. Retrieved 17 August 2019. ARMv8 SVE (Scalable Vector Extension) chip, which uses 512bit floating point.
  89. ^ "Cortex-A65AE – ARM". ARM. Retrieved 8 April 2020. can execute two-threads in parallel on each cycle. Each thread can be at different exception levels and run different operating systems.
  90. ^ Frumusanu, Andrei. "Marvell Announces ThunderX3: 96 Cores & 384 Thread 3rd Gen ARM Server Processor". AnandTech. Retrieved 26 May 2020.
  91. ^ "AArch64: add support for newer Apple CPUs · apple/llvm-project@677da09". GitHub. Retrieved 23 September 2022.
  92. ^ "New features for the Armv8-A architecture - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com. 21 September 2020. Retrieved 28 December 2021.
  93. ^ "Arm's solution to the future needs of AI, security and specialized computing is v9". Arm. Retrieved 16 August 2021.
  94. ^ "First Armv9 Cortex CPUs for Consumer Compute". community.arm.com. 25 May 2021. Retrieved 16 August 2021.
  95. ^ "Arm A-Profile Architecture Developments 2021 - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com. 8 September 2021. Retrieved 25 September 2023.
  96. ^ "Arm A-Profile Architecture Developments 2022 - Architectures and Processors blog - Arm Community blogs - Arm Community". community.arm.com. 29 September 2022. Retrieved 25 September 2023.
  97. ^ "Line Card" (PDF). 2003. Retrieved 1 October 2012.
  98. ^ Parrish, Kevin (14 July 2011). "One Million ARM Cores Linked to Simulate Brain". EE Times. Retrieved 2 August 2011.
  99. ^ "Processor mode". Arm Holdings. Retrieved 26 March 2013.
  100. ^ "KVM/ARM" (PDF). Retrieved 14 February 2023.
  101. ^ Brash, David (August 2010). Extensions to the ARMv7-A Architecture. 2010 IEEE Hot Chips 22 Symposium (HCS). pp. 1–21. doi:10.1109/HOTCHIPS.2010.7480070. ISBN 978-1-4673-8875-7. S2CID 46339775.
  102. ^ "How does the ARM Compiler support unaligned accesses?". 2011. Retrieved 5 October 2013.
  103. ^ "Unaligned data access". Retrieved 5 October 2013.
  104. ^ "Cortex-M0 r0p0 Technical Reference Manual" (PDF). Arm.
  105. ^ "ARMv7-M Architecture Reference Manual". Arm. Retrieved 18 July 2022.
  106. ^ a b "ARMv7-A and ARMv7-R Architecture Reference Manual; Arm Holdings". arm.com. Retrieved 19 January 2013.
  107. ^ "ARM Information Center". Retrieved 10 July 2015.
  108. ^ "Condition Codes 1: Condition flags and codes". ARM Community. 11 September 2013. Retrieved 26 September 2019.
  109. ^ "9.1.2. Instruction cycle counts".
  110. ^ "CoreSight Components: About the Debug Access Port".
  111. ^ "The Cortex-M3: Debug Access Port (DAP)".
  112. ^ Anderson, Mike. "Understanding ARM HW Debug Options" (PDF).
  113. ^ "CMSIS-DAP Debugger User's Guide".
  114. ^ "CMSIS-DAP".
  115. ^ "ARM DSP Instruction Set Extensions". arm.com. Archived from the original on 14 April 2009. Retrieved 18 April 2009.
  116. ^ "DSP & SIMD". Retrieved 10 July 2015.
  117. ^ "ARM7TDMI Technical Reference Manual" (PDF). p. ii.
  118. ^ Jaggar, Dave (1996). ARM Architecture Reference Manual. Prentice Hall. pp. 6–1. ISBN 978-0-13-736299-8.
  119. ^ Nathan Willis (10 June 2015). "Resurrecting the SuperH architecture". LWN.net.
  120. ^ "ARM Processor Instruction Set Architecture". ARM.com. Archived from the original on 15 April 2009. Retrieved 18 April 2009.
  121. ^ "ARM aims son of Thumb at uCs, ASSPs, SoCs". Linuxdevices.com. Archived from the original on 9 December 2012. Retrieved 18 April 2009.
  122. ^ "ARM Information Center". Infocenter.arm.com. Retrieved 18 April 2009.
  123. ^ "Jazelle". ARM Ltd. Archived from the original on 2 June 2017.
  124. ^ Tom R. Halfhill (2005). "ARM strengthens Java compilers: New 16-Bit Thumb-2EE Instructions Conserve System Memory" (PDF). Archived from the original (PDF) on 5 October 2007.
  125. ^ ARM 아키텍처 참조 매뉴얼, Armv7-A 및 Armv7-R 에디션, C.b, 섹션 A2.10, 2012년 7월 25일 발행.
  126. ^ "ARM Compiler toolchain Using the Assembler – VFP coprocessor". ARM.com. Retrieved 20 August 2014.
  127. ^ "VFP directives and vector notation". ARM.com. Retrieved 21 November 2011.
  128. ^ a b "Differences between ARM Cortex-A8 and Cortex-A9". Shervin Emami. Retrieved 21 November 2011.
  129. ^ "FPA10 Data Sheet" (PDF). chrisacorns.computinghistory.org.uk. GEC Plessey Semiconductors. 11 June 1993. Retrieved 26 November 2020. In relation to IEEE 754-1985, the FPA achieves conformance in single-precision arithmetic [...] Occasionally, double- and extended-precision multiplications may be produced with an error of 1 or 2 units in the least significant place of the mantissa.
  130. ^ a b "Cortex-A7 MPCore Technical Reference Manual – 1.3 Features". ARM. Retrieved 11 July 2014.
  131. ^ "ArmHardFloatPort – Debian Wiki". Wiki.debian.org. 20 August 2012. Retrieved 8 January 2014.
  132. ^ "Cortex-A9 Processor". arm.com. Retrieved 21 November 2011.
  133. ^ "About the Cortex-A9 NEON MPE". arm.com. Retrieved 21 November 2011.
  134. ^ "US20050125476A1".
  135. ^ "US20080141004A1".
  136. ^ "ARM Options". GNU Compiler Collection Manual. Retrieved 20 September 2019.
  137. ^ Ne10: GitHubARM Architecture를 위한 오픈 최적화된 소프트웨어 라이브러리 프로젝트
  138. ^ Joseph Yiu. "Introduction to ARMv8.1-M architecture" (PDF). Retrieved 18 July 2022.
  139. ^ "Genode – An Exploration of ARM TrustZone Technology". Retrieved 10 July 2015.
  140. ^ "ARM Announces Availability of Mobile Consumer DRM Software Solutions Based on ARM TrustZone Technology" (Press release). News.thomasnet.com. Retrieved 18 April 2009.
  141. ^ Laginimaineb (8 October 2015). "Bits, Please!: Full TrustZone exploit for MSM8974". Bits, Please!. Retrieved 3 May 2016.
  142. ^ Di Shen. "Attacking your 'Trusted Core' Exploiting TrustZone on Android" (PDF). Black Hat Briefings. Retrieved 3 May 2016.
  143. ^ "ARM TrustZone and ARM Hypervisor Open Source Software". Open Virtualization. Archived from the original on 14 June 2013. Retrieved 14 June 2013.
  144. ^ "AMD Secure Technology". AMD. Archived from the original on 23 July 2016. Retrieved 6 July 2016.
  145. ^ Smith, Ryan (13 June 2012). "AMD 2013 APUs to include ARM Cortex A5 Processor for Trustzone Capabilities". AnandTech. Retrieved 6 July 2016.
  146. ^ a b Shimpi, Anand Lal (29 April 2014). "AMD Beema Mullins Architecture A10 micro 6700T Performance Preview". AnandTech. Retrieved 6 July 2016.
  147. ^ Walton, Jarred (4 June 2014). "AMD Launches Mobile Kaveri APUs". AnandTech. Retrieved 6 July 2016.
  148. ^ "Root of Trust" (white paper). Samsung Electronics. April 2016.
  149. ^ "ARM Architecture Reference Manual" (PDF). p. B4-8. Archived from the original (PDF) on 6 February 2009. APX and XN (execute never) bits have been added in VMSAv6 [Virtual Memory System Architecture]
  150. ^ ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition. ARM Limited.
  151. ^ "Cortex-A65AE". ARM Developer. Retrieved 26 April 2019.
  152. ^ "AppliedMicro Showcases World's First 64-bit ARM v8 Core" (Press release). AppliedMicro. 28 October 2011. Retrieved 11 February 2014.
  153. ^ "Samsung's Exynos 5433 is an A57/A53 ARM SoC". AnandTech. Retrieved 17 September 2014.
  154. ^ "ARM Cortex-A53 MPCore Processor Technical Reference Manual: Cryptography Extension". ARM. Retrieved 11 September 2016.
  155. ^ Frumusanu, Andrei (3 September 2020). "ARM Announced Cortex-R82: First 64-bit Real Time Processor". AnandTech.
  156. ^ Frumusanu, Andrei (30 March 2021). "Arm Announces Armv9 Architecture: SVE2, Security, and the Next Decade". AnandTech.
  157. ^ Harrod, Alex (30 March 2021). "Arm launches v9 architecture" (Press release). Arm Ltd.
  158. ^ Osborne, Charlie. "ARM announces PSA security architecture for IoT devices". ZDNet.
  159. ^ a b Wong, William (25 October 2017). "ARM's Platform Security Architecture Targets Cortex-M". Electronic Design. Archived from the original on 8 May 2019.
  160. ^ Hoffenberg, Steve (31 October 2017). "ARM: Security Isn't Just a Technological Imperative, It's a Social Responsibility". VDC Research. Archived from the original on 28 September 2023.
  161. ^ Armasu, Lucian (22 February 2018). "ARM Reveals More Details About Its IoT Platform Security Architecture". Tom's Hardware.
  162. ^ Williams, Chris. "ARM PSA IoT API? BRB... Toolbox of tech to secure net-connected kit opens up some more". The Register.
  163. ^ Hayes, Caroline (25 February 2019). "Embedded World: Arm introduces fourth security element to PSA". Electronics Weekly.
  164. ^ "PSA Certified: building trust in IoT". PSA Certified.
  165. ^ a b "PSA Certified–building trust, building value". EE Times. 4 March 2019.
  166. ^ "The $6trn importance of security standards and regulation in the IoT era". IoT Now. 16 March 2020.
  167. ^ McGregor, Jim (4 March 2019). "Arm Introduces Security Certification Testing For IoT". Forbes.
  168. ^ Speed, Richard (26 February 2019). "Azure IoT heads spaceward to maintain connectivity at the edge, courtesy of Inmarsat". TheRegister.
  169. ^ "OS-9 Specifications". Microware.
  170. ^ a b "Pharos". SourceForge. Retrieved 24 May 2018.
  171. ^ "PikeOS Safe and Secure Virtualization". Retrieved 10 July 2013.
  172. ^ a b "Safety Certified Real-Time Operating Systems – Supported CPUs".
  173. ^ "ARM Platform Port". opensolaris.org. Archived from the original on 2 December 2012. Retrieved 29 December 2012.
  174. ^ "Green Hills Software's INTEGRITY-based Multivisor Delivers Embedded Industry's First 64-bit Secure Virtualization Solution". ghs.com. Retrieved 14 March 2018.
  175. ^ "Enea OSE real-time operating system for 5G and LTE-A Enea". enea.com. Archived from the original on 1 January 2019. Retrieved 17 April 2018.
  176. ^ "Supported Platforms". docs.sel4.systems. Retrieved 23 November 2018.
  177. ^ "QNX Software Development Platform (SDP 7.0) BlackBerry QNX". blackberry.qnx.com. Retrieved 27 July 2020.
  178. ^ "Wind River Releases 64-Bit VxWorks RTOS" (Press release). Wind River Systems. 28 February 2011. Retrieved 24 October 2023.
  179. ^ "Manjaro-ARM". Manjaro wiki. 20 June 2022.
  180. ^ Linus Torvalds (1 October 2012). "Re: [GIT PULL] arm64: Linux kernel port". Linux kernel mailing list (Mailing list). Retrieved 2 May 2019.
  181. ^ Larabel, Michael (27 February 2013). "64-bit ARM Version of Ubuntu/Debian Is Booting". Phoronix. Retrieved 17 August 2014.
  182. ^ "Debian Project News – August 14th, 2014". Debian. 14 August 2014. Retrieved 17 August 2014.
  183. ^ "Ubuntu Server for ARM". ubuntu.com.
  184. ^ "Architectures/AArch64". Retrieved 16 January 2015.
  185. ^ "Portal:ARM/AArch64". Retrieved 16 January 2015.
  186. ^ "SUSE Linux Enterprise 12 SP2 Release Notes". Retrieved 11 November 2016.
  187. ^ "Red Hat introduces ARM server support for Red Hat Enterprise Linux". redhat.com. Retrieved 18 January 2019.
  188. ^ "64-bit ARM architecture project update". The FreeBSD Foundation. 24 November 2014.
  189. ^ "OpenBSD/arm64". Retrieved 25 September 2023.
  190. ^ "NetBSD/arm64". Retrieved 5 August 2018.
  191. ^ "HP, Asus announce first Windows 10 ARM PCs: 20-hour battery life, gigabit LTE". Ars Technica. Retrieved 22 January 2018. This new version of Windows 10 is Microsoft's first 64-bit ARM operating system. It'll run x86 and 32-bit ARM applications from the Store, and in due course, 64-bit ARM applications. However, Microsoft hasn't yet finalised its 64-bit ARM SDK. Many pieces are in place (there's a 64-bit ARM compiler, for example), but the company isn't yet taking 64-bit ARM applications submitted to the Store, and there aren't any 64-bit ARM desktop applications either.
  192. ^ Hassan, Mehedi (10 December 2016). "Windows 10 on ARM64 gets its first compiled apps". MSPoweruser.
  193. ^ Filippidis, Katrina (1 June 2018). "VLC becomes one of first ARM64 Windows apps". Engadget.
  194. ^ Sweetgall, Marc (15 November 2018). "Official support for Windows 10 on ARM development". Windows Developer. Windows Blogs. Microsoft. Retrieved 17 December 2019.
  195. ^ Gartenberg, Chaim (12 November 2020). "macOS Big Sur is now available to download". The Verge. Retrieved 13 November 2020.
  196. ^ Clover, Juli (23 June 2020). "Rosetta Won't Support x86 Virtualization Apps Running Windows". MacRumors. Retrieved 13 November 2020.
  197. ^ "ARM – The Official Wine Wiki". Retrieved 10 July 2015.
  198. ^ "ARM64 – The Official Wine Wiki". Retrieved 10 July 2015.
  199. ^ "ARM Security Updates". ARM Developer. Retrieved 24 May 2018.

서지학

더보기

외부 링크

건축설명서

빠른 참조 카드

지침들

옵코드