하드웨어 / 소프트웨어 인터페이스 및 운영 체제에 대한 초보자 과정을 공부하면서 일부 하드웨어 부품을 소프트웨어로 교체하는 것이 더 나은지에 대한 주제가 종종 등장합니다. 연결할 수 없습니다.
하드웨어 / 소프트웨어 인터페이스 및 운영 체제에 대한 초보자 과정을 공부하면서 일부 하드웨어 부품을 소프트웨어로 교체하는 것이 더 나은지에 대한 주제가 종종 등장합니다. 연결할 수 없습니다.
답변:
다른 답변이 누락 된 기본 연결은 다음과 같습니다.
범용 컴퓨터 (예 : CPU)가 주어지면 정의한 계산을 거의 수행하도록 프로그래밍 할 수 있습니다. 그러나 특수 하드웨어가 더 잘 수행되거나 가치를 제공하지 못할 수 있습니다.
(이 답변은 데스크톱 처리에 중점을두고 해당 도메인의 예제를 사용합니다)
1990 년대 중후반에 PC 게임을 기억할만큼 나이가 든다면 Quake 와 같은 FPS 게임을 기억할 것입니다 . CPU가 그래픽을 렌더링하는 데 필요한 계산을 수행했음을 의미하는 "소프트웨어 렌더링"으로 시작되었습니다. 한편, CPU는 또한 입력 처리, 오디오 처리, AI 처리 등을 수행해야했습니다. CPU 자원에 많은 부담이있었습니다. 또한 그래픽 처리는 주류 CPU (현재 또는 현재)에 적합하지 않습니다. 최신 병렬 CPU보다 더 많은 코어가 필요한 매우 병렬 작업 인 경향이 있습니다 (8).
우리는 그래픽 처리를 소프트웨어에서 하드웨어로 옮겼습니다. 3dfx Voodoo 및 Nvidia TNT (현재 GeForce )에 들어갑니다. 이들은 CPU에서 GPU로 처리를 오프로드하는 특수 그래픽 카드입니다. 이로 인해 워크로드가 분산되어 동일한 양의 작업을 수행 할 수있는 더 많은 컴퓨팅 리소스가 제공되었을뿐만 아니라 그래픽 카드는 3D 그래픽을 훨씬 더 빠르고 CPU보다 더 많은 기능으로 렌더링 할 수있는 특수 하드웨어 였습니다.
현대 시대로 빨리 나아가고 데스크탑 에는 CPU 이외의 그래픽이 필요 합니다 . 운영 체제조차 GPU 없이는 작동 할 수 없습니다. CPU가 실제로 GPU를 통합하는 것이 매우 중요합니다. 1
DVD가 새것이었을 때 데스크탑 컴퓨터에 DVD 드라이브를 설치할 수있었습니다. 그러나 오늘날의 CPU는 끊김없이 DVD 비디오 및 오디오 스트림을 디코딩 할만큼 강력하지 않았습니다. 처음에는 디코딩을 수행하기 위해 특수한 PCI 보드가 필요했습니다. 이것은 DVD 포맷을 해독하기 위해 특별히 제작 된 특수 하드웨어였습니다. 3D 그래픽과 마찬가지로 더 많은 컴퓨팅 리소스를 제공 할뿐만 아니라 작업에 맞게 사용자 지정하여 DVD를 원활하게 재생할 수 있습니다.
CPU가 훨씬 강력 해짐에 따라 "범용 컴퓨터에서"를 의미하는 "소프트웨어"로 DVD를 디코딩하는 것이 가능해졌습니다. 비효율적 인 프로세서 일지라도 DVD 재생이 사용자의 기대에 부응 할 수 있도록 충분한 원시 속도와 파이프 라인 최적화가있었습니다.
우리는 지금 강력한 배의 CPU를 수백 또는 수천이 2 DVD를 도입했을 때 우리가 가진로를. Blu-ray가 등장했을 때 범용 하드웨어는 작업을 처리 할만큼 강력하기 때문에 특수 하드웨어가 필요하지 않았습니다.
최신 인텔 CPU에는 H.264 인코딩 및 디코딩에 대한 특수 지침 이 있습니다. 이것은 범용 CPU가 모두 동일한 칩에서 특수 기능을 얻는 추세의 일부입니다. CPU에는 유사한 회로가 포함되어 있기 때문에 DVD를 사용하는 경우와 마찬가지로 H.264를 효율적으로 디코딩하기 위해 별도의 PCI Express 보드가 필요하지 않습니다.
1 GPU는 그래픽 계산을 수행하도록 특별히 설계된 프로세서를 나타냅니다. 구형 2D 그래픽 카드는 GPU 가 아니 었습니다. 모니터와 대화하기 위해 DAC가있는 프레임 버퍼였습니다. 차이점은 GPU에는 특정 유형의 계산에서 탁월한 특수 프로세서가 포함되어 있으며 시간이 지남에 따라 실제로 프로그래밍이 가능하다는 사실입니다 (쉐이더). 그래픽 하드웨어에는 항상 프레임 버퍼의 데이터를 케이블 (VGA, DVI, HDMI, DisplayPort)을 통해 출력하고 모니터가 이해할 수있는 형식으로 변환하는 데 필요한 특수 회로가 포함되어 있습니다. 이는 계산 을 특수 하드웨어 로 오프로드하는 것에 대한 논의와 관련이 없습니다 .
2 DVD-Video는 1997 년에 Pentium 2가 새로 출시 된 시점에 출시되었습니다. 이것은 CPU의 전력 소비가 급격히 증가한시기였습니다. DVD 디코더가있는 새로운 P2 컴퓨터를 고려하거나 약간 오래된 P1에 컴퓨터를 설치할 수 있습니다. Wikipedia의 MIPS 목록을 사용하는 최신 6 코어 i7 과 비교하면 최신 CPU는 590 배에서 1,690 배 더 빠릅니다. 이것은 부분적으로 클럭 속도 때문일뿐 아니라 여러 코어로 표준으로 이동하고 최신 CPU는 클럭 틱당 코어 당 더 많은 작업을 수행합니다. 또한 기술이 발전함에 따라 데스크탑 (x86 서버 시장을 지배하는 인텔)은 데스크탑 사용자가 원하는 작업 (예 : 비디오 디코딩)의 속도를 높이기 위해 특수한 지침을 추가합니다.
소프트웨어 정의 라디오라는 가장 눈에 띄는 사례 중 하나를 아직 언급 한 사람이 아무도 없습니다.
현재의 스마트 폰을 50 년 전으로 가져와 1960 년대 중반부터 유능한 엔지니어에게 보여 주면 대부분의 스마트 폰을 이해할 수있었습니다. 슈퍼 컴퓨터를 주머니에 맞는 것으로 축소 할 수 있습니까? 검사. 패키지에 초 고품질 컬러 텔레비전을 사용할 수 있습니까? 검사. 그 시대의 컴퓨터보다 훨씬 더 빠르며, 더 많은 스토리지 등이 있습니까? 검사. 그러한 복잡한 기능을 수행 할 수있는 소프트웨어가 작성 되었습니까? 검사.
그러나 유능한 엔지니어에게이 패키지에는 매우 효율적인 송신기와 민감한 수신기 세트가 포함되어 있다고 말합니다. 여러 채널에서 동시에 송수신 할 수있는 디지털 확산 스펙트럼 트랜시버로 수 마일 떨어진 인프라 타워와 통신 할 수 있습니다. ; 고속 데이터를 빌딩 어딘가에있는 기지국과 통신하는 다른 디지털 트랜시버; 저전력 웨어러블 장치와 통신하는 또 다른 디지털 트랜시버; 중간 궤도의 위성에서 약한 신호를받는 다른 수신기는 거짓말 쟁이라고합니다.
그는 그러한 고감도의 수신기를 수많은 조정 회로 없이는 구성 할 수 없다는 것을 알고 있기 때문에 거짓말 쟁이라고 부를 것입니다. 이러한 회로에는 커패시터 및 인덕터와 같은 기술보다 물리학에 의해 더 정의 된 크기의 부품이 필요합니다.
그런 다음 현대 라디오에서는 대부분이 소프트웨어로 수행된다고 설명해야합니다. 안테나로부터 들어오는 신호가 중간 주파수로 변환되고 약간 증폭 된 후에는 아날로그-디지털 변환기에 의해 샘플링된다. 후속 프로세싱은 디지털 신호 프로세서에서 발생한다. 구식 하이 엔드 라디오에서 많은 양의 하드웨어를 필요로했던 이러한 튜닝, 필터링은 수학 방정식의 형태로 설명 될 수 있습니다. 그렇게 할 수 있다면 DSP에 의해 이러한 방정식이 실시간으로 실행될 수 있습니다.
이것은 하드웨어를 대체하는 소프트웨어의 가장 눈에 띄는 예 중 하나라고 생각합니다. 그 결과, 1960 년대 유능한 엔지니어에게도 마술과 비슷한 스마트 폰을 주머니에 넣었습니다.
이것과 비교하여 오늘날 차고 도어 오프너, 전자 욕실 저울 또는 TV 리모컨의 간단한 논리가 맞춤형 하드웨어 대신 범용 마이크로 컨트롤러 및 소프트웨어를 사용하여 구현된다는 생각은 거의 사소한 것처럼 보입니다 (그리고 확실히 많은 것입니다) 소프트웨어 정의 라디오보다 가상의 1960 년대 엔지니어에게 더 잘 이해됩니다.)
이 회로를 고려하십시오.
플립 플롭, 즉 쌍 안정 멀티 바이브레이터입니다. 이 코드로 바꿀 수 있습니다 :
static bool toggle;
if (toggle == true)
{
lblTop.BackColor = Color.Black;
lblBottom.back Color = Color.Red;
}
else
{
lblTop.BackColor = Color.Red;
lblBottom.BackColor = Color.Black;
}
toggle = !toggle;
그것은 정확히 어떤 소리인지를 의미합니다.
특히 유명한 예는 Steve Wozniak가 Apple II 용으로 설계 한 Disk II Drive 입니다.
주요 혁신은 경쟁 업체가 하드웨어에 의존하는 동안 소프트웨어를 사용하여 컨트롤러를 컴팩트하게 만드는 것이 었습니다. 애플의 전자 기술자였던 빌 페르난데즈 (Bill Fernandez)는 "[Wozniak의] 디자인의 주요 장점은 일반적인 60-70 대신 6 개의 칩만 사용했다"는 점을 기억합니다.
더 익숙한 또 다른 예는 Emulators입니다. 소프트웨어의 전체 하드웨어 (및 소프트웨어)를 완전히 대체합니다. CPU, 다양한 제어 칩, 저장 장치까지.
이제 모든 하드웨어를 제거 할 수는 없으며 결국 에는 소프트웨어를 실행할 무언가 가 필요 합니다 . 그러나 일반적으로 하드웨어에서 구현할 수있는 모든 논리 작업은 소프트웨어로도 구현할 수 있습니다 (기본 하드웨어 및 구현에 따라 성능이 동일하지 않거나 느리거나 빠르거나 다른 상황에서 발생할 수 있음).
이것이 사실 인 또 다른 분야는 신시사이저입니다.
초기 신시사이저는 100 % 아날로그 하드웨어로 파형을 직접 생성 한 다음 회로 (필터, 증폭기 등)를 통해 수정했습니다. 사운드를 디지털로 합성 할 수 있었지만 일반인이 감당할 수없는 컴퓨팅 리소스 (실제 메인 프레임 및 맞춤형 디지털-아날로그 변환기 하드웨어)가 필요했습니다.
칩 제작이 개선됨에 따라 신시사이저는 순수한 아날로그에서 디지털 신호로 제어되는 신시사이저 칩 으로 이동 했지만 여전히 아날로그 신호를 생성 한 다음 순수한 디지털 합성 (샘플 재생, FM 합성 , 진정한 첨가제 합성 등)으로 전환했습니다.
오늘날 프로세서는 프로그래머가 실시간으로 동작을 시뮬레이션하여 원래 회로의 동작을 정확하게 복제하는 고전적인 아날로그 신시사이저의 컴퓨터 버전을 만들 수있을 정도로 충분히 싸고 빠릅니다. 실제로 전화 및 태블릿은 이제 충분히 빠르게 실행할 수 있습니다. 이 재창조를 실행하십시오. 코르 IMS-20은 일례이다.
클래식 신디사이저와 새 신디사이저 모두 Ableton Live, Logic 또는 Cubase와 같은 디지털 오디오 프로그램을위한 VST 또는 AU 플러그인으로 제공되며, 공간이나 돈이 없어서 사용할 수없는 사람들에게 신디사이저에 액세스 할 수 있습니다. 그들.
편집 :이 시점에서 아날로그 모듈 합성을 실시간으로 시뮬레이션하는 VCVRack 도 언급해야합니다 . 몇 시간 동안 음악을 몇 시간 동안 렌더링 할 수있는 상당한 발전입니다.
>:*3
입니다.
예전에는 컷이 분명했습니다. 빠른 실행이 필요한 대부분은 하드웨어로 구현해야했습니다. 주파수를 생성하는 멀티 바이브레이터를 예로 들어 보겠습니다. 얼마 전에 (고정 된) 주파수를 생성하기 위해 몇 개의 트랜지스터, 커패시터 및 결국 석영이 필요했습니다. 이제 몇 센트 정도의 저렴한 마이크로 컨트롤러가 있습니다. 속도가 너무 빠르므로 멀티 바이브레이터를 쉽게 만들 수 있습니다. 또한 소프트웨어를 통해 이전에는 다른 하드웨어를 납땜해야하는 위치에서 발생하는 주파수를 쉽게 제어 할 수 있습니다. 그러나 특정 (그러나 현재는 다소 높은) 주파수를 넘어가려면 여전히 순수한 하드웨어가 필요합니다. 보시다시피, 둘 사이에 선이 있지만 소프트웨어로 해결할 수있는 부분이 (지수 적으로) 커지고 있습니다.
실제로 편집 “소프트웨어는 하드웨어를 교체 할 수 있습니다”는 실제로 정확하지 않습니다. 하드웨어가 너무 강력해서 하드웨어를 에뮬레이트하는 소프트웨어를 실행하는 데 사용할 수 있다는 사실입니다. 따라서 간단하지만 정적으로 납땜 된 트랜지스터 대신 소프트웨어를 이해하는 수백만 개의 트랜지스터를 사용합니다. 따라서 "하드웨어는 이제 소프트웨어를 이해할 수 있습니다"라는 용어를 사용해야합니다.
아케이드 게임 탱크 (1976 년경)와 홈 콘솔 게임 인 Combat (1977)의 비교는 40 년 전에 소프트웨어가 하드웨어를 어떻게 대체 할 수 있는지에 대한 좋은 예입니다.
아케이드 게임 탱크 (1976 년경)는 두 명의 플레이어가 탱크 주위를 운전하고 서로를 쏠 수 있도록 허용했습니다. 여기에는 어떤 종류의 프로세서도 포함되지 않았지만 전자 빔, 탱크 및 샷의 수평 및 수직 위치와 플레이어의 점수, 회전 각도, 경과 시간을 추적하는 하드웨어 카운터가 있습니다. 점수, 플레이어의 탱크 모양 및 배경과 관련된 비트 맵 데이터를 출력하는 것은 논리적 인 논리를 가졌습니다.
Atari 2600 비디오 컴퓨터 시스템 (1977 년경 홈 게임 콘솔)에는 2 개의 비트 맵 객체와 4 개의 가변 폭 펄스 발생기의 수평 (수직은 아님) 위치를 추적하고 20 비트 폭의 로우를 유지하고 클럭 아웃하는 하드웨어가 포함되어 있습니다. -해상도 플레이 필드 그래픽 패턴과 2 개의 고해상도 8 비트 패턴, 플레이어의 래치 색상, 배경 및 플레이 필드, 다양한 객체 간의 충돌을 감지합니다. 범용 프로그래밍 가능 타이머도 포함되었지만 하드웨어에는 위의 것 외에 다른 것이 거의 없습니다. 그럼에도 불구하고 하드웨어가 게임 탱크의 하드웨어보다 훨씬 단순하더라도 2K ROM 카트리지 Combat를 사용하면 2600은 동일한 기본 게임을 수행 할 수 있지만 다른 많은 기능 (다양한 차량 및 배경, 튀는 샷 등)을 사용할 수 있습니다. 대부분의 아케이드 머신을 대체 할 수 있습니다. ' 소프트웨어가있는 하드웨어. 흥미롭게도 Atari 2600은 상업용으로 판매되는 마이크로 프로세서 기반 홈 비디오 게임 시스템 중 두 번째로 간단한 하드웨어 플랫폼 일지라도 하드웨어를 소프트웨어로 교체하는 것이 용이하도록 설계되어 있습니다. 경쟁사.
"소프트웨어는 하드웨어를 대체 할 수 있습니다"라는 문구는 분명한 이점이없는 한 하드웨어 문제를 해결하려고하지 않는다는 경고입니다. 소프트웨어는 개발하는 데 10 배-50 배 저렴하고 하드웨어보다 단위당 생산하는 비용이 거의 저렴합니다. 소프트웨어에서 X를 실제로 효율적으로 수행 할 수 없다면 하드웨어에서 X를하는 것이 좋은 해결책은 아닙니다.
가상 메모리가있는 초기 컴퓨터에서는 TLB 누락시 작업을 전환하여 새 페이지 항목을로드해야했습니다. OS 소프트웨어는 올바른 프로세스를 찾고 페이지 테이블을 안내하여 올바른 항목을 찾아서 TLB에 다시 씁니다. 원래 프로세스로 다시 전환하기 전에 계속하십시오.
이제 대부분의 CPU는 하드웨어를 사용하여 프로세스를 수행하고, 페이지 테이블을 읽고, 페이지 테이블을 걷고, TLB를 업데이트합니다.
두 방법 모두 소프트웨어를 사용하여 페이지 결함을 처리해야하지만, TLB-miss가 페이지 결함을 수동으로 초과하면 하드웨어는 여전히 소프트웨어 성능을 능가합니다.
반복적으로 처리해야하는 간단한 절차가 있으면 일반적으로 하드웨어 교체를 찾습니다. 제어 흐름이 복잡한 복잡한 하드웨어 솔루션이있는 경우 소프트웨어를 사용하여 하드웨어를 단순화 할 수 있습니다.
소프트웨어가 하드웨어를 대체 할 수있는 많은 경우가 있으며 그 반대도 마찬가지입니다.
이에 대한 전형적인 예는 수학 조회 테이블입니다. 매번 일반적인 표현식으로 결과를 계산하는 대신 내부적으로 수학 코 프로세서에 저장되며 필요할 때 간단히 참조 할 수 있습니다.
대부분은 이미 오디오 필터 및 페달이나 앰프와 같은 실제 악기 및 장치를 모방 할 수있는 소프트웨어에 익숙 할 것입니다.
물리적 시스템보다 더 빠르고 저렴할 경우 가상으로 생성 할 수있는 모든 하드웨어가 사용됩니다.