문제

Linus Torvalds는 Transmeta라는 프로세서 회사에서 일했습니다. 그들이 만든 프로세서는 핵심의 RISC 기반 객체였습니다. 내가 올바르게 기억한다면, 아이디어는 핵심이 임의적이고 업그레이드 가능한 "프로세서 에뮬레이션 레이어"(x86, powerpc 등)를 실행했다는 것이 아이디어가 RISC 코어 명령어 세트로 높은 수준의 Opcodes를 변환했다는 것입니다.

이 아이디어에 무슨 일이 있었으며, 그러한 접근 방식이 (프로그래밍 측면에서) 이점을 가질 수있는 장단점, 단점 및 상황은 무엇입니까?

도움이 되었습니까?

해결책

이 회사는 예상대로 잘하지 않았으며 결국 Novafora는 전력 절약 기술을 위해 인수했습니다. ( http://www.novafora.com/pr01-28-09.html )

내가 알고있는 모든 계정 에서이 기술은 단순히 기존 시스템과 경쟁하지 않았습니다. 그들은 성능 수에 미치지 못했습니다. 또한, 다른 번역가를 VLIW 디자인 위에 올려 놓을 수 있었을 수도 있지만, 나는 그들이 생산 한 제품을 알지 못합니다. Crusoe Chip이 대체 "Translation"Microcode 다운로드를 수락 할 수 있다는 것을 기억하지 못합니다.

나는 Crusoe 프로세서를 사용한 장치를 개인적으로 소유했으며, 배터리 수명에 확실히 전달되는 동안 장치의 성능은 불분명했습니다. 비난의 일부는 아마도 사용 된 특수 버전의 Windows에서 수평을 달성 할 수 있지만 여전히 느 렸습니다.

기껏해야 휴대용 원격 데스크탑에 적합했습니다.

IMHO,이 기술은 소프트웨어 VM과 같은 .NET 및 JVM과 동일한 이점을 가지고 있습니다.

  • 거꾸로 된 것은 순수한 소프트웨어 JIT보다 하드웨어 솔루션 (Java Accelerator 프로세서를 사용하는 것과 같이 하드웨어 솔루션)으로 코드를 더 빨리 가속화 할 수 있다는 것입니다.
  • 단점은 기본 코드를 실행하는 프로세서가 얻는 원시 성능을 얻지 못한다는 것입니다.

일부 관점에서 현대 X86 칩을 매우 전문화 된 것과 같이 코드 모핑으로 생각할 수 있습니다. 그들은 X86 아키텍처를보다 효율적인 RISC와 같은 서브 인트로 트러 션 세트로 번역 한 다음이를 실행합니다.

이러한 종류의 기술의 또 다른 예는 회로 수준에서 다양한 종류의 프로세서 또는 원시 회로에서 모방하도록 프로그래밍 할 수있는 FPGA 일 수 있습니다. 일부 크레이 시스템은 이런 종류의 "가속기 노드"와 함께 제공 될 수 있다고 생각합니다.

다른 팁

우선 대부분의 CISC 프로세서는 내부적으로 OPCode를 RISC OPS와 유사한 UOPS Micro-OPS로 변환합니다. 파이프 라인과 여러 코어는 RISC 프로세서의 간격을 닫았습니다. C 소스 또는 다른 어셈블리 프론트 엔드의 교차 호환성이 필요한 경우 LLVM을 사용할 수 있습니다. http://llvm.org/

명백한 장점 :

  • 모든 OS를 실행하는 기능 (프로세서 에뮬레이션을 필요한 것으로 전환하기 만하면)
  • 소프트웨어 지원이없는 동일한 프로세서/OS에서 다른 아키텍처를 위해 바이너리를 실행할 수있는 가능성 (물론 커널 지원).

명백한 사기 :

  • 추가 에뮬레이션 레이어 == 더 많은 오버 헤드 == 모든 것에 동등한 성능을 얻으려면 더 빠른 프로세서가 필요합니다.

비용 절감에는 수량이 제공되므로 TransMeta 칩과 같은 것은 기존의 대량 X86 칩과 가격으로 경쟁하기 전에 많은 양을 판매해야합니다.

내가 기억한다면, 트랜스 메타 칩의 요점은 그것이 저전력이라는 것이었다. 실리콘 게이트가 적을수록 모든 클럭 사이클을 앞뒤로 뒤집는 것은 에너지를 절약합니다. 코드 모핑은 저전력 RISC 칩에서 복잡한 명령 세트 (CISC)를 실행할 수 있도록했습니다.

Transmeta의 첫 번째 프로세서 인 Crusoe는 벤치 마크 소프트웨어를 실행하는 문제로 인해 잘 작동하지 않았습니다. 두 번째 프로세서 인 Efficeon은 Intel Atom (동일한 성능 범주)보다 전력을 적게 사용하고 동일한 전력 봉투에서 Centrino보다 더 잘 수행했습니다.

이제 소프트웨어와 유연성 관점에서이를 살펴보면 코드 모핑은 해당 기술의 모든 이점과 손해와 함께 정시 편집의 한 형태 일뿐입니다. X86 코드는 본질적으로 가상 머신에서 실행되며 다른 프로세서에 의해 에뮬레이션됩니다. 가상화의 가장 큰 장점은 현재 많은 가상 머신간에 단일 프로세서를 공유 할 수 있으므로 유휴 CPU 사이클이 적으므로 더 효율적입니다 (하드웨어 비용 및 에너지 비용).

따라서 어떤 형태의 가상화와 마찬가지로 코드 모핑은 자원에 더 효율적이라는 것 같습니다.

하드웨어 지원 X86 ISA 가상화에 대한 또 다른 접근 방식은 loongson 3 CPU.

대부분의 최신 프로세서는 실제로 사용 설명서를 구현합니다 마이크로 코드. 호환성 문제를 포함하여 여러 가지 이유가 있지만 다른 이유도 있습니다.

"하드웨어"와 "소프트웨어"의 구별은 실제로 만들기가 어렵습니다. JVM 또는 CIL (.NET)과 같은 최신 가상 머신은 하드웨어에서도 구현 될 수 있지만 어쨌든 마이크로 코드를 사용하여 수행 될 수 있습니다.

시스템에서 여러 가지 추상화 계층이있는 이유 중 하나는 프로그래머/엔지니어가 더 높은 수준에서 작업 할 때 관련없는 세부 사항에 대해 생각할 필요가 없기 때문입니다.

운영 체제 및 시스템 라이브러리는 또한 추가 추상화 계층을 제공합니다. 그러나 이러한 레이어를 사용하면 시스템이 제공하는 기능이 필요하지 않은 경우 시스템을 "느리게"합니다 (즉, OS에서 수행 한 스레드 스케줄링). 자신만의 프로그램 별 스케줄러를 Linux 커널에서 이길 수있는 쉬운 일이 아닙니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top