Apakah aritmatika sinyal analog lebih cepat daripada aritmatika digital?


37

Apakah secara teori dimungkinkan untuk mempercepat prosesor modern jika seseorang akan menggunakan aritmatika sinyal analog (dengan biaya akurasi dan presisi) alih-alih FPU digital (CPU -> DAC -> analog FPU -> ADC -> CPU)?

Apakah pembagian sinyal analog dimungkinkan (karena penggandaan FPU sering membutuhkan satu siklus CPU)?


Itu tidak menjawab pertanyaan Anda, tetapi di sini ada artikel menarik tentang penggunaan komputer elektromekanis analog di kapal perang arstechnica.com/information-technology/2014/03/…
Doombot

Ada proposal dari waktu ke waktu untuk menggunakan logika digital multi-state - mis., "Flip-flop" dengan empat state, bukan dua. Ini sebenarnya telah dilakukan dalam beberapa chip memori produksi, karena mengurangi hambatan kabel. (Saya tidak tahu apakah ada chip yang saat ini diproduksi menggunakan logika multi-negara.)
Hot Licks

Jawaban:


45

Pada dasarnya, semua rangkaian adalah analog. Masalah dengan melakukan perhitungan dengan tegangan atau arus analog adalah kombinasi antara noise dan distorsi. Sirkuit analog tunduk pada kebisingan dan sangat sulit untuk membuat sirkuit analog linier dalam urutan besar. Setiap tahap dari rangkaian analog akan menambah noise dan / atau distorsi pada sinyal. Ini bisa dikontrol, tetapi tidak bisa dihilangkan.

Sirkuit digital (yaitu CMOS) pada dasarnya mengesampingkan seluruh masalah ini dengan menggunakan hanya dua level untuk merepresentasikan informasi, dengan setiap tahap membuat ulang sinyal. Siapa yang peduli jika outputnya mati sebesar 10%, itu hanya harus di atas atau di bawah ambang batas. Siapa yang peduli jika output terdistorsi 10%, sekali lagi hanya harus di atas atau di bawah ambang batas. Pada setiap ambang batas membandingkan, sinyal pada dasarnya dibuat ulang dan masalah noise / nonlinier / dll. ditelanjangi. Hal ini dilakukan dengan memperkuat dan memotong sinyal input - sebuah CMOS inverter hanyalah sebuah penguat yang sangat sederhana yang dibuat dengan dua transistor, dioperasikan loop terbuka sebagai pembanding. Jika level didorong melewati ambang, maka Anda mendapatkan sedikit kesalahan. Prosesor umumnya dirancang untuk memiliki tingkat kesalahan bit pada urutan 10 ^ -20, IIRC. Karena ini, sirkuit digital sangat kuat - mereka dapat beroperasi pada berbagai kondisi yang sangat luas karena linearitas dan kebisingan pada dasarnya tidak menjadi masalah. Hampir sepele untuk bekerja dengan angka 64 bit secara digital. 64 bit mewakili 385 dB rentang dinamis. Itu 19 urutan besarnya. Tidak ada cara di neraka Anda akan mendapatkan mendekati analog dengan sirkuit. Jika resolusi Anda adalah 1 picovolt (10 ^ -12) (dan ini pada dasarnya akan dibanjiri secara instan oleh noise termal) maka Anda harus mendukung nilai maksimum 10 ^ 7. Yaitu 10 megavolt. Sama sekali tidak ada cara untuk beroperasi pada rentang dinamis semacam itu dalam analog - sangat tidak mungkin. Pertukaran penting lainnya dalam sirkuit analog adalah bandwidth / kecepatan / waktu respons dan derau / rentang dinamis. Sirkuit bandwidth yang sempit akan mengeluarkan noise rata-rata dan bekerja dengan baik pada rentang dinamis yang luas. Imbalannya adalah mereka lambat. Sirkuit bandwidth lebar cepat, tetapi noise adalah masalah yang lebih besar sehingga jangkauan dinamis terbatas. Dengan digital, Anda dapat melempar bit pada masalah untuk meningkatkan jangkauan dinamis atau mendapatkan peningkatan kecepatan dengan melakukan hal-hal secara paralel, atau keduanya.

Namun, untuk beberapa operasi, analog memiliki kelebihan - lebih cepat, lebih sederhana, konsumsi daya yang lebih rendah, dll. Digital harus dikuantifikasi dalam level dan waktu. Analog keduanya kontinu. Salah satu contoh di mana analog menang ada di penerima radio di kartu wifi Anda. Sinyal input masuk pada 2,4 GHz. Penerima yang sepenuhnya digital akan membutuhkan ADC yang menjalankan setidaknya 5 gigasamples per detik. Ini akan menghabiskan banyak tenaga. Dan itu bahkan tidak mempertimbangkan pemrosesan setelah ADC. Saat ini, ADC dengan kecepatan itu benar-benar hanya digunakan untuk sistem komunikasi baseband berperforma sangat tinggi (misalnya modulasi optik koheren simbol rate tinggi) dan pada peralatan uji. Namun, beberapa transistor dan pasif dapat digunakan untuk mengonversi 2.

Intinya adalah bahwa ada kelebihan dan kekurangan untuk komputasi analog dan digital. Jika Anda dapat mentolerir kebisingan, distorsi, rentang dinamis rendah, dan / atau presisi rendah, gunakan analog. Jika Anda tidak dapat mentolerir kebisingan atau distorsi dan / atau Anda memerlukan rentang dinamis tinggi dan presisi tinggi, maka gunakan digital. Anda selalu dapat membuang bit lebih banyak pada masalah untuk mendapatkan lebih banyak presisi. Tidak ada analog yang setara dengan ini.


Ini layak mendapatkan lebih banyak dukungan!
John U

Aku tahu itu! Saya tidak bisa mengatakannya dengan baik. Info tambahan yang bagus tentang penerima nirkabel.
Smithers

2
Sampel dan tahan sirkuit? Pita magnetik? Catatan fonografi? Film fotografi? Perangkat memori analog tentu ada, tetapi mereka memiliki karakteristik yang sedikit berbeda dari yang digital.
alex.forencich

1
Kisaran berapa pun, ya. Tetapi kisaran apa pun dengan resolusi sewenang-wenang? Tidak terlalu banyak.
alex.forencich

1
@ehsan amplifikasi tidak meningkatkan rentang dinamis Anda, nilai minimum Anda (lantai kebisingan) akan diperkuat dengan maksimum.
mbrig

20

Saya telah menghadiri pembicaraan IEEE bulan lalu berjudul " Kembali ke Masa Depan: Pemrosesan Sinyal Analog ". Pembicaraan diatur oleh IEEE Solid State Circuit Society.

Diusulkan bahwa MAC analog (berlipat ganda dan menumpuk) dapat mengonsumsi daya lebih sedikit daripada yang digital. Satu masalah, bagaimanapun, adalah bahwa MAC analog adalah subjek untuk kebisingan analog. Jadi, jika Anda menyajikannya dengan input yang sama dua kali, hasilnya tidak akan persis sama.


1
(+1 untuk derau analog.)
George Herold

Demikian juga, sebuah artikel tentang penggunaan komputer mekanik pada kapal perang arstechnica.com/information-technology/2014/03/…
Doombot

18

Apa yang Anda bicarakan disebut Komputer Analog, dan cukup luas di awal-awal komputer. Pada sekitar akhir 60-an mereka pada dasarnya menghilang. Masalahnya adalah bahwa tidak hanya presisi jauh lebih buruk daripada digital, tetapi akurasi juga. Dan kecepatan komputasi digital jauh lebih cepat daripada sirkuit analog sederhana sekalipun.

Pembagi analog memang mungkin, dan Perangkat Analog membuat sekitar 10 model yang berbeda. Ini sebenarnya pengganda yang dimasukkan ke jalur umpan balik dari op amp, menghasilkan pembagi, tetapi AD digunakan untuk menghasilkan pembagi khusus yang dioptimalkan untuk rentang dinamis besar (60 dB, saya pikir) dari pembagi.

Pada dasarnya, perhitungan analog lambat dan tidak akurat dibandingkan dengan digital. Tidak hanya itu, tetapi realisasi komputasi analog tertentu memerlukan konfigurasi ulang perangkat keras. Di akhir permainan, komputer analog hibrida diproduksi yang dapat melakukan ini di bawah kendali perangkat lunak, tetapi ini besar dan tidak pernah tertangkap kecuali untuk penggunaan khusus.


6
Saya suka jawaban Anda, (+1) dan pertanyaannya. Tapi saya tidak akan setuju pada bagian kecepatan. Analog jauh lebih cepat. Masalahnya adalah presisi dan mungkin paling penting kebisingan. Analog selalu memiliki beberapa noise. Digital bebas noise, dari sisi komputer.
George Herold

Terima kasih atas kata-kata baiknya. Tapi. Analog mungkin "banyak" dengan cepat tetapi secara umum digital lebih cepat. Dan kebisingan mudah disimulasikan.
WhatRoughBeast

4
Analog cepat, jika hanya aritmatika, exp, sqrt dll. Tapi begitu Anda menambahkan kapasitor atau induktor, diperlukan untuk diferensiasi dan integrasi, maka lambat. Komputer analog sejarah sering digunakan untuk memecahkan persamaan diferensial - mereka "lambat". Tetapi beberapa hanya melakukan aljabar. Jadi saya bisa melihat mengapa orang yang berbeda mungkin memiliki pandangan yang berbeda pada kecepatan komputasi analog.
DarenW

1
Bisakah Anda menjelaskan mengapa analog lambat? Dalam komputer digital beberapa instruksi "lambat" karena mereka membutuhkan beberapa iterasi yang harus diselesaikan. Tetapi dengan analog saya percaya itu hanya membutuhkan satu lulus untuk mendapatkan hasilnya.
mrpyo

1
@ mrpyo - Tentu saja, Anda dapat melakukan kedua fungsi tersebut. Jika Anda mengambil pengganda dan menghubungkan kedua input secara bersamaan, itu menjadi "squarer". Jika Anda menggunakan rangkaian Photon yang digunakan dalam jawabannya dengan kedua input terikat pada output op amp yang dihasilkannya akar kuadrat. Hubungan tegangan / arus dalam suatu dioda adalah eksponensial, sehingga Anda dapat menggunakannya untuk menghasilkan eksponen. Dan dengan meletakkan dioda di jalur umpan balik Anda mendapatkan logaritma. Namun, dalam semua kasus, rentang dinamis dapat dibatasi oleh offset penguat, drift, dll. Dan untuk sirkuit dioda ada sumber kesalahan lain juga.
WhatRoughBeast

11

Apakah pembagian sinyal analog dimungkinkan (karena penggandaan FPU sering membutuhkan satu siklus CPU)?

Jika Anda memiliki pengali analog, pembagi analog "mudah" dibuat:

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

Dengan asumsi X1 dan X2 positif, ini menyelesaikan Y = X1 / X2.

Pengganda analog memang ada, jadi pada prinsipnya rangkaian ini dimungkinkan. Sayangnya sebagian besar pengganda analog memiliki rentang nilai input yang diperbolehkan yang terbatas.

Pendekatan lain adalah dengan menggunakan penguat log terlebih dahulu untuk mendapatkan logaritma X1 dan X2, kurangi, lalu eksponensial.

Apakah secara teori dimungkinkan untuk mempercepat prosesor modern jika seseorang akan menggunakan aritmatika sinyal analog (dengan biaya presisi) alih-alih FPU digital (CPU -> ADC -> analog FPU -> DAC -> CPU)?

Pada intinya itu adalah masalah teknologi --- begitu banyak yang telah diinvestasikan dalam R&D untuk membuat operasi digital lebih cepat, bahwa teknologi analog akan memiliki jalan panjang untuk mengejar ketinggalan pada titik ini. Tetapi tidak ada cara untuk mengatakan itu benar-benar mustahil.

Di sisi lain, saya tidak akan mengharapkan sirkuit pembagi minyak mentah saya di atas untuk bekerja di atas mungkin 10 MHz tanpa harus melakukan beberapa pekerjaan yang sangat hati-hati dan mungkin penelitian menyelam yang mendalam untuk membuatnya lebih cepat.

Juga, Anda mengatakan kita harus mengabaikan presisi, tetapi sirkuit seperti yang saya gambar mungkin hanya akurat hingga 1% atau lebih tanpa penyetelan dan mungkin hanya hingga 0,1% tanpa menemukan teknologi baru. Dan rentang dinamis dari input yang dapat dihitung secara bermanfaat juga terbatas. Jadi tidak hanya itu mungkin 100 hingga 1000 kali lebih lambat dari sirkuit digital yang tersedia, kisaran dinamisnya mungkin sekitar 10 300 kali lebih buruk juga (dibandingkan dengan IEEE 64-bit floating point).


5
Hei, aku punya pengganda AD lama yang bisa 10 MHz. Saya yakin saya bisa mendapatkan sesuatu yang lebih cepat sekarang. Hanya untuk melemparkan kunci inggris ke dalam topik ini, jika komputasi kuantum pernah berhasil maka akan menjadi analog.
George Herold

@ GeorgeHerold, itulah argumen terbaik saya mengapa komputasi kuantum adalah minyak ular.
The Photon

Trik yang sangat rapi. Kecuali saya pikir itu menghitung A (x1) / (1 + A (x2)), yang harus akurat untuk keuntungan besar A.
Yale Zhang

@georgeherold Mixer benar-benar hanya pengganda analog cepat dengan persyaratan input yang sedikit aneh, dan saya pikir orang-orang microwave mendapatkan mereka hingga 60 GHz atau lebih hari ini
mbrig

@ MBrig, kesulitannya adalah op-amp dan menjaga loop umpan balik tetap tertutup.
The Photon

7
  1. Tidak, karena konversi DAC dan ADC membutuhkan lebih banyak waktu daripada pembagian digital atau perkalian.

  2. Perkalian dan pembagian analog tidak sesederhana itu, menggunakan lebih banyak energi dan itu tidak akan hemat biaya (dibandingkan dengan IC digital).

  3. Perkalian analog dan IC divisi yang cepat (rentang GHz) memiliki presisi sekitar 1%. Itu berarti semua yang dapat Anda bagi pada pembagi analog cepat adalah ... angka 8-bit atau sesuatu seperti itu. IC digital menangani angka-angka seperti ini dengan sangat cepat.

  4. 3.410343.41034

Di sini Anda dapat melihat pembagi dan pengali analog yang ditawarkan oleh Perangkat Analog ( tautan )

masukkan deskripsi gambar di sini

Hal-hal ini tidak terlalu berguna dalam komputasi umum. Ini jauh lebih baik dalam pemrosesan sinyal analog.


4. Tidak tepat. Angka floating point direpresentasikan dalam notasi ilmiah, pada dasarnya dua angka - koefisien dan eksponen keduanya mencakup rentang yang lebih terbatas.
mrpyo

@ mrpyo Anda yakin? Saya pikir rentang float 16-bit jauh lebih tinggi dari angka yang saya tulis sebelum mengedit (sekitar 0000000000000.1 dan 10000000000000).
Kamil

en.wikipedia.org/wiki/IEEE_floating_point Untuk C floatitu 23 bit untuk koefisien, 8 bit untuk eksponen dan 1 bit untuk tanda. Anda harus mewakili 3 rentang tersebut dalam analog.
mrpyo

Tidak bisakah Anda mengurangi frekuensi yang diperlukan dengan memiliki banyak unit secara seri dan hanya menggunakan satu pada saat itu?
mrpyo

4
Setara analog sebenarnya dari Floating Point akan menjadi domain logaritmik, oleh karena itu rentang dinamis yang sangat tinggi (lebih tinggi dari mantissa FP) tidak diperlukan. Kalau tidak, poin bagus.
Brian Drummond

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.