Programing

ARM 아키텍처는 x86과 어떻게 다릅니 까?

lottogame 2020. 6. 14. 10:25
반응형

ARM 아키텍처는 x86과 어떻게 다릅니 까? [닫은]


x86 아키텍처는 특별히 키보드와 함께 작동하도록 설계 되었습니까? 이 둘의 주요 차이점은 무엇입니까?


ARMA는 RISC 동안 (축소 명령어 세트 컴퓨팅) 아키텍처 x86A는 CISC (복합 명령 집합 컴퓨팅) 하나.

이 측면과의 핵심 차이점은 ARM 명령어는 레지스터에서 데이터를로드 및 저장하기위한 몇 가지 명령어가있는 레지스터에서만 작동하고 x86은 메모리에서 직접 작동 할 수 있다는 것입니다. v8 ARM까지는 기본 32 비트 아키텍처로 다른 바이트보다 4 바이트 작업을 선호했습니다.

따라서 ARM은 더 간단한 아키텍처로, 작은 실리콘 영역과 많은 절전 기능을 제공하는 동시에 x86은 전력 소비와 생산 측면에서 전력 소모자가됩니다.

" x86 아키텍처는 특별히 키보드와 함께 작동하도록 설계 되었습니까? ARM은 이동성을 기대합니까? " 모바일 용 x86키보드와 함께 작동하도록 특별히 설계되지 않았습니다 ARM. 그러나 핵심 아키텍처 선택으로 인해 실제로 x86에는 IOARM과는 달리 직접 작업하기위한 지침이 있습니다 . 그러나 USB와 같은 특수 IO 버스에서는 이러한 기능에 대한 요구도 사라지고 있습니다.

인용 할 문서가 필요한 경우 Cortex-A 시리즈 프로그래머 안내서 (4.0) 에서 RISC와 CISC 아키텍처의 차이점에 대해 설명합니다.

ARM 프로세서는 RISC (Reduced Instruction Set Computer) 프로세서입니다.

x86과 같은 CISC (복합 명령 세트 컴퓨터) 프로세서에는 단일 명령으로 복잡한 작업을 수행 할 수있는 풍부한 명령 세트가 있습니다. 이러한 프로세서는 종종 기계 명령을 내부 작업 시퀀스 (마이크로 코드)로 디코딩하는 상당한 양의 내부 로직을 가지고 있습니다.

반대로 RISC 아키텍처는 더 적은 수의 더 많은 범용 명령을 가지고 있으며,이 명령은 훨씬 적은 수의 트랜지스터로 실행될 수있어 실리콘을보다 저렴하고 전력 효율적으로 만듭니다. 다른 RISC 아키텍처와 마찬가지로 ARM 코어에는 많은 수의 범용 레지스터가 있으며 많은 명령이 단일 주기로 실행됩니다. 간단한 주소 지정 모드를 사용하여 레지스터 내용 및 명령어 필드에서 모든로드 / 저장 주소를 확인할 수 있습니다.

ARM 회사는 또한 이러한 용어가 비즈니스에 적용되는 방법을 설명하는 아키텍처, 프로세서 및 장치 개발 문서 라는 제목의 문서를 제공합니다 .

명령어 세트 아키텍처를 비교하는 예제 :

예를 들어 응용 프로그램에서 일종의 바이트 단위 메모리 비교 블록 (컴파일러에서 생성, 세부 정보 건너 뛰기)이 필요한 경우 다음과 같이 보일 수 있습니다. x86

repe cmpsb         /* repeat while equal compare string bytewise */

에있는 동안 ARM가장 짧은 형태처럼 보일 수 있습니다 (등 오류 검사없이)

top:
ldrb r2, [r0, #1]! /* load a byte from address in r0 into r2, increment r0 after */
ldrb r3, [r1, #1]! /* load a byte from address in r1 into r3, increment r1 after */
subs r2, r3, r2    /* subtract r2 from r3 and put result into r2      */
beq  top           /* branch(/jump) if result is zero                 */

RISC 및 CISC 명령어 세트의 복잡성이 어떻게 다른지에 대한 힌트를 제공해야합니다.


몇 년 동안 ARM이 전력 소비 측면에서 상당히 실질적인 이점을 가지고있어 모든 종류의 배터리 작동 장치에 매력적이라는 사실 외에는 키보드 또는 모바일에만 해당되는 것이 없습니다.

실제 차이점에 비해 ARM에는 더 많은 레지스터가 있으며 인텔이 추가하기 훨씬 전에 대부분의 명령어에 대한 예측을 지원하며 주로 코드 밀도를 높이기 위해 (엄격한 프로그램으로 메모리가 적음) "엄지 손가락"모드가 있으며 거의 모든 곳에서 전력을 절약 할 수있는 일종의 기술 (원하는 경우 "트릭"이라고 함).

한 번에 인텔은 전력 소비보다 속도에 더 중점을 두었습니다. 그들은 주로 노트북의 맥락에서 전력 소비를 강조하기 시작했습니다. 랩톱의 경우 일반적인 전력 목표는 상당히 작은 랩톱의 경우 6 와트 정도였습니다. 가장 최근에 ( 훨씬 더 최근에) 휴대 기기 (휴대 전화, 태블릿 등)를 타겟팅하기 시작했습니다.이 시장에서 그들은 몇 와트 정도를보고 있습니다. ARM의 접근 방식은 ARM과 상당히 다르지만 ARM이 주로 마이크로 아키텍처를 강조한 제조 기술을 강조하면서 (ARM이 디자인을 팔고 다른 사람에게 제조를 떠난다는 것을 고려하면 놀랄 일이 아닙니다) 상당히 잘 해내 고있는 것 같습니다.


Jerry Coffin의 첫 번째 단락에 추가됩니다 . 즉, ARM 설계는 낮은 전력 소비를 제공합니다.

회사 ARM는 CPU 기술 만 라이센스합니다. 그들은 물리적 칩을 만들지 않습니다. 이를 통해 다른 회사는 일반적으로 SOC 또는 시스템 온 칩 이라고하는 다양한 주변 장치 기술을 추가 할 수 있습니다 . 기기가 태블릿, 휴대 전화 또는 차량 내 엔터테인먼트 시스템인지 여부 이를 통해 칩 공급 업체는 나머지 칩을 특정 응용 프로그램에 맞출 수 있습니다. 추가 혜택이 있습니다.

  1. 저렴한 보드 비용
  2. 저전력 (주 1)
  3. 보다 쉬운 제조
  4. 작은 폼 팩터

ARMAMBA 를 통해 SOC 공급 업체를 지원 하여 SOC 구현자가 선반 타사 모듈을 구매할 수 있도록합니다. 이더넷, 메모리 및 인터럽트 컨트롤러와 같은 MIPS 와 같은 일부 다른 CPU 플랫폼은이를 지원 하지만 MIPS는 전력을 의식하지 않습니다.

이들 모두는 휴대용 / 배터리 작동 설계에 유리하다. 일부는 모든 것이 잘됩니다. 또한 ARM배터리 작동 장치의 역사가 있습니다. 애플 뉴턴 , Psion Organizers . PDA 소프트웨어 인프라 구조를 만들기 위해 일부 기업에 의해 활용 한 스마트 폰 입력 장치. 그러나 스마트 폰 과 함께 사용하기 위해 GUI를 다시 발명 한 사람들은 더 많은 성공을 거두었습니다 .

Open source툴 세트 의 등장으로 operating systems다양한 SOC칩이 사용되었습니다. 폐쇄 된 조직은 ARM에 사용 가능한 모든 다양한 장치를 지원하려는 데 문제가 있습니다. 가장 인기있는 두 가지 셀룰러 플랫폼 인 Andriod 및 OSx / IOS는 LinuxFreeBSD, Mach 및 NetBSD OS를 기반으로합니다 . 공급 업체가 칩셋에 대한 소프트웨어 지원을 제공 할 수 Open Source있도록 도와줍니다 SOC.

x86키보드에 사용되는 이유 자명합니다. 이 소프트웨어에는 소프트웨어가 있으며 더 중요한 사람들은 해당 소프트웨어를 사용하도록 훈련 된 것입니다. NetwinderARM원래 키보드 용으로 설계된 시스템 중 하나 입니다. 또한 제조업체는 현재 서버 시장에서 ARM64를보고 있습니다. 전력 / 열은 24/7 데이터 센터의 문제입니다.

따라서이 칩을 중심으로 성장 하는 생태계 는 저전력 소비와 같은 기능만큼 중요합니다. ARM1980 년대 중반에서 후반까지 저전력 고성능 컴퓨팅을 위해 노력해 왔으며 많은 사람들이 탑승하고 있습니다.

Note1: Multiple chips need bus drivers to inter-communicate at known voltages and drive. Also, typically separate chips need support capacitors and other power components which can be shared in an SOC system.


The ARM architecture was originally designed for Acorn personal computers (See Acorn Archimedes, circa 1987, and RiscPC), which were just as much keyboard-based personal computers as were x86 based IBM PC models. Only later ARM implementations were primarily targeted at the mobile and embedded market segment.

Originally, simple RISC CPUs of roughly equivalent performance could be designed by much smaller engineering teams (see Berkeley RISC) than those working on the x86 development at Intel.

But, nowadays, the fastest ARM chips have very complex multi-issue out-of-order instruction dispatch units designed by large engineering teams, and x86 cores may have something like a RISC core fed by an instruction translation unit.

So, any current differences between the two architectures are more related to the specific market needs of the product niches that the development teams are targeting. (Random opinion: ARM probably makes more in license fees from embedded applications that tend to be far more power and cost constrained. And Intel needs to maintain a performance edge in PCs and servers for their profit margins. Thus you see differing implementation optimizations.)


The ARM is like an Italian sports car:

  • Well balanced, well tuned, engine. Gives good acceleration, and top speed.
  • Excellent chases, brakes and suspension. Can stop quickly, can corner without slowing down.

The x86 is like an American muscle car:

  • Big engine, big fuel pump. Gives excellent top speed, and acceleration, but uses a lot of fuel.
  • Dreadful brakes, you need to put an appointment in your diary, if you want to slowdown.
  • Terrible steering, you have to slow down to corner.

In summary: the x86 is based on a design from 1974 and is good in a straight line (but uses a lot of fuel). The arm uses little fuel, does not slowdown for corners (branches).


Metaphor over, here are some real differences.

  • Arm has more registers.
  • Arm has few special purpose registers, x86 is all special purpose registers (so less moving stuff around).
  • Arm has few memory access commands, only load/store register.
  • Arm is internally Harvard architecture my design.
  • Arm is simple and fast.
  • Arm instructions are architecturally single cycle (except load/store multiple).
  • Arm instructions often do more than one thing (in a single cycle).
  • Where more that one Arm instruction is needed, such as the x86's looping store & auto-increment, the Arm still does it in less clock cycles.
  • Arm has more conditional instructions.
  • Arm's branch predictor is trivially simple (if unconditional or backwards then assume branch, else assume not-branch), and performs better that the very very very complex one in the x86 (there is not enough space here to explain it, not that I could).
  • Arm has a simple consistent instruction set (you could compile by hand, and learn the instruction set quickly).

참고URL : https://stackoverflow.com/questions/14794460/how-does-the-arm-architecture-differ-from-x86

반응형