프로세서가 한 번에 하나만 실행할 수 있다면 어떻게 음악을 지속적으로 재생할 수 있고 다른 작업을 계속 실행할 수 있습니까?
인터럽트 시스템을 이해하고 있지만 CPU가 연속적으로 오디오를 처리하여 불안하거나 지연되지 않도록해야합니까?
기본 구현에 대해 묻고 있습니다.이 질문은 멀티 스레딩과 관련이 있습니까? 1 코어, 1 스레드 CPU는이 멀티 태스킹을 어떻게 달성 할 수 있습니까?
프로세서가 한 번에 하나만 실행할 수 있다면 어떻게 음악을 지속적으로 재생할 수 있고 다른 작업을 계속 실행할 수 있습니까?
인터럽트 시스템을 이해하고 있지만 CPU가 연속적으로 오디오를 처리하여 불안하거나 지연되지 않도록해야합니까?
기본 구현에 대해 묻고 있습니다.이 질문은 멀티 스레딩과 관련이 있습니까? 1 코어, 1 스레드 CPU는이 멀티 태스킹을 어떻게 달성 할 수 있습니까?
답변:
CPU는 고정 된 클록 주기로 작동하기 때문에 실제로 연속적인 것은 없으며, 이산화가 충분히 민감하기 때문에 그렇게 만 보인다.
CPU 클럭 속도가 라고 가정하십시오 . CPU가 클럭주기 중 1 개만 오디오 처리 에 전념 하고 관련없는 작업에 나머지 클럭주기를 사용하는 경우, 모든 "오디오 처리 작업"사이 에 지연이 발생 합니다. CPU에 의해 (단순히, 우리는 CPU가 하나의 클록 사이클을 사용하여이 처리를 수행한다고 가정한다).
지연 (인간은 20Hz ~ 20Khz 범위의 주파수를들을 수 있으므로 사람의 청각은 그러한 지연에 민감하지 않습니다)을 허용 한 다음 가 필요합니다 . CPU는 지연을 유지하면서 동시에 더 많은 작업을 처리 할 수 있습니다 .
40 년 전, CPU가 스피커를 직접 제어하는 컴퓨터가 있었을 것입니다. 그 시간은 오래 전에 끝났습니다.
기본 사운드 카드가있는 컴퓨터가있을 수 있습니다. 이러한 사운드 카드에는 스테레오 오디오 샘플을위한 버퍼가 있으며, 버퍼를 채울 수 있고, 출력 기능이 시작되며, 사운드 카드는 CPU가 아무 것도 할 필요없이 버퍼의 샘플에서 오디오를 생성하기 시작합니다. 모든 CPU는 버퍼가 다 떨어지기 전에 더 많은 오디오 샘플로 버퍼를 채우면됩니다. 1 메가 바이트 버퍼가있는 경우 CD 품질의 250,000 스테레오 샘플은 약 6 초입니다. 따라서 몇 초마다 CPU는 이러한 버퍼를 다시 채워야합니다.
실제로 컴퓨터에는 훨씬 더 발전된 것이 있습니다. 원칙적으로 동일하지만 버퍼는 mp3 또는 aac 형식의 사운드로 직접 채워질 수 있으며 사운드 카드는이 데이터를 자체적으로 스테레오 샘플로 디코딩합니다. 음량, 음질 개선, 피치 또는 속도 변경, 서라운드 사운드 생성 등 모든 종류의 다양한 효과를 생성하도록 프로그래밍 할 수 있습니다.
CPU는 종종 사운드 버퍼를 채우는 것만으로 많은 일을하지 않습니다. 나머지는 다른 것에 의해 이루어집니다. 물론 "사운드 카드"라고 말하면, 사운드 카드에서 칩으로, 다양한 기능을 가진 거대한 칩에서 트랜지스터의 작은 조각으로 줄었습니다.
이러한 카드 제조업체 중 하나 는 시작 지점으로 https://en.wikipedia.org/wiki/Wolfson_Microelectronics 를 참조하십시오 .