Tiếng ngoại quốc mình dốt đặc chỉ vọc phá thực tiễn bác xem google dịch nó làm một hơi a .
" Theo đuổi tải trọng thấp I2S thường dễ bị nhiễu và người ta nói rằng khoảng cách tối đa có thể được định tuyến là khoảng 10 cm. Để tránh ảnh hưởng của nhiễu, nên giữ cho đường truyền của tín hiệu I2S càng ngắn càng tốt. Mặt khác, thiết bị là nguồn của tín hiệu I2S cũng là nguồn nhiễu. Các DDC nhận S / PDIF và USB, và các máy tính đơn lẻ xuất trực tiếp I2S vẫn là nguồn nhiễu điều khiển vi máy tính / FPGA / CPU ở tốc độ cao và phát ra tiếng ồn. Nên thực hiện các biện pháp EMC như cách điện đường dẫn và che chắn nguồn bằng tấm kim loại để giảm thiểu ảnh hưởng đến đường truyền tín hiệu, chip DAC và xung nhịp. Bây giờ chúng ta hãy xem xét một cách tiếp cận khác. Bằng cách giảm tải cho CPU và bộ nhớ, lượng tiếng ồn do chính hệ thống xử lý kỹ thuật số phát ra có thể được giảm bớt. Ngay cả khi nguồn nhiễu và hệ thống xử lý D / A ở gần nhau và rất khó để thực hiện các biện pháp đối phó EMC như bảng HAT, có vẻ như một cách tiếp cận như vậy có thể được đưa vào thực tế. Có thể giảm tải bao nhiêu cho hệ thống xử lý số? Có thể cải thiện chất lượng âm thanh sau khi giảm tải không? Nhiệm vụ để xem đó là điểm khởi đầu cho Âm thanh trên Ether. Truy cập bộ nhớ trực tiếp từ xa Raspberry Pi 4 SoC (Hệ thống trên chip) BCM2711 được trang bị chức năng đầu ra I2S (bộ nối tiếp). Quá trình xử lý tối thiểu cần thiết để xuất ra tín hiệu I2S từ bộ nối tiếp này chỉ là hai bước sau. Hướng dẫn chuyển DMA từ bộ đệm DMA sang bộ nối tiếp. Ghi dữ liệu PCM vào bộ đệm DMA. Bộ đệm DMA ở đây đề cập đến cái gọi là bộ đệm ALSA. Đối với các lệnh truyền DMA, cần chuẩn bị cấu trúc dữ liệu được gọi là khối điều khiển và tải nó vào bộ điều khiển DMA. Khối điều khiển này giữ địa chỉ bộ nhớ của bộ đệm DMA và địa chỉ của khối điều khiển sẽ được xử lý tiếp theo, và bộ điều khiển DMA thực hiện truyền DMA trong khi đọc khối điều khiển này lần lượt. Lệnh truyền DMA chỉ cần được đưa ra một lần trước khi bắt đầu phát lại và tỷ lệ của nó trong tải phát lại là rất nhỏ. [1] Bây giờ, chúng ta hãy phân phối giải mã tệp âm thanh và phát lại PCM cho hai máy để giảm tải. Ở đây, vai trò giải mã được gọi là kết thúc phía trước, và vai trò phát lại được gọi là kết thúc phía sau. Trong cấu hình phân phối tải như vậy, dữ liệu PCM được truyền từ front end tới back end qua mạng. Nếu dữ liệu PCM nhận được bởi chương trình phụ trợ có thể được ghi vào bộ đệm DMA như nó vốn có, thì tất cả quá trình xử lý cần thiết để phát lại sẽ được hoàn tất và đây có vẻ là hoạt động đơn giản nhất. Tuy nhiên, việc xử lý mạng thông thường cần nhiều bước trước khi dữ liệu qua mạng LAN đến ứng dụng. Trước hết, khi giao diện mạng (có nghĩa là, cổng LAN) nhận dữ liệu, nó sẽ thông báo cho hạt nhân bởi một ngắt phần cứng để hàng đợi trên phần cứng không đầy. Hạt nhân được gọi sao chép dữ liệu từ hàng đợi và ghi nó vào bộ đệm trên hạt nhân. Sau đó, việc triển khai mạng của hạt nhân (ngăn xếp TCP / IP) thực hiện kiểm soát thứ tự, kiểm tra lỗi và kiểm soát truyền lại và chuẩn bị cho việc chuyển tới ứng dụng. Khi quá trình chuẩn bị hoàn tất, ứng dụng (ví dụ: phần mềm phát nhạc) nhận được thông báo từ hạt nhân, sao chép dữ liệu từ bộ đệm hạt nhân và ghi dữ liệu đó vào bộ đệm do ứng dụng chuẩn bị. Nó nhiều hơn một chút. Tại thời điểm này, phần mềm phát lại có thể đọc dữ liệu trên bộ đệm và phân tích nội dung. Nếu bạn cắt phần dữ liệu PCM và sao chép nó vào bộ đệm ALSA, quá trình phát lại thành công. Ý tưởng mà chúng tôi muốn thực hiện để giảm tải là chỉ chọn dữ liệu PCM trong giai đoạn 2) và ghi trực tiếp vào bộ đệm ALSA. Chỉ sao chép dữ liệu vào bộ nhớ vật lý một lần. Điều này được chuyển trực tiếp DMA đến bộ nối tiếp. Nếu có thể đạt được điều này, không cần sao chép thêm dữ liệu, không yêu cầu lệnh gọi hệ thống đọc / ghi, không cần chuyển đổi ngữ cảnh và bộ nhớ đệm CPU không bị ô nhiễm bởi lượng lớn dữ liệu. Tất cả đều tốt về mặt giảm tải. Bạn sẽ có thể giảm thiểu hoạt động của CPU / bộ nhớ. Để thuận tiện, đối với các gói không phải PCM, hãy kiểm soát các bước sau 2) để thực hiện như bình thường. Thật bất tiện khi bạn không thể kết nối với ssh. Việc triển khai Âm thanh qua Ether như vậy có thể tìm thấy điểm tương đồng với ý tưởng Truy cập Bộ nhớ Trực tiếp Từ xa (RDMA), truyền dữ liệu trực tiếp đến các ứng dụng trên các máy từ xa. Đó là bởi vì nó đạt được mục đích của RDMA, không sao chép. Âm thanh qua Ether có thể được mô tả giống như RDMA, chuyên dùng để phát lại nhạc. văn bản thay thế
https://www.symphonic-mpd.com/release/aoe/aoe.svg Chú thích [1] Nói một cách chính xác, tải liên quan đến khối điều khiển xảy ra ngay cả khi phát lại. Điều này là do trình điều khiển ALSA bao gồm một quy trình quét khối điều khiển để kiểm tra định kỳ tiến trình chuyển DMA. Kích thước bộ đệm càng lớn thì quá trình quét này càng lâu. Ngay cả khi kích thước bộ đệm tối thiểu (= 2) được sử dụng, nó mất hàng trăm nano giây và khi kích thước bộ đệm lớn, mất vài micro giây, điều này gây ra sự thay đổi trong thời gian xử lý. "