Monday 14 August 2017

Pindah rata filter hardware


Panduan Ilmuwan dan Insinyur untuk Pengolahan Sinyal Digital Oleh Steven W. Smith, Ph. D. Bab 4: Kecepatan Eksekusi Perangkat Lunak DSP: Komputasi Hardware Daya meningkat dengan sangat cepat, buku apapun tentang subjek ini akan usang sebelum diterbitkan. Its a author nightmare PC IBM asli diperkenalkan pada tahun 1981, berbasis di sekitar mikroprosesor 8088 dengan clock 4,77 MHz dan bus data 8 bit. Ini diikuti oleh generasi baru komputer pribadi yang diperkenalkan setiap 3-4 tahun: 8088 rarr 80286 8594 80386 8594 80486 8594 80586 (Pentium). Masing-masing sistem baru ini meningkatkan kecepatan komputasi dengan faktor sekitar lima dari teknologi sebelumnya. Pada tahun 1996, kecepatan clock meningkat menjadi 200 MHz, dan data bus menjadi 32 bit. Dengan perbaikan lainnya, hal ini mengakibatkan peningkatan daya komputasi hampir seribu hanya dalam 15 tahun Anda harus mengharapkan faktor lain seribu dalam 15 tahun ke depan. Satu-satunya cara untuk mendapatkan informasi terkini di bidang yang berubah dengan cepat ini adalah langsung dari produsen: iklan, lembar spesifikasi, daftar harga, dll. Lupakan buku untuk data kinerja, lihat di majalah dan surat kabar harian Anda. Harapkan bahwa kecepatan komputasi mentah akan lebih dari dua kali lipat setiap dua tahun. Belajar tentang keadaan kekuatan komputer saat ini sama sekali tidak cukup untuk memahami dan melacak perkembangannya. Dengan mengingat hal ini, kita bisa beralih ke ikhtisar tentang bagaimana kecepatan eksekusi dibatasi oleh perangkat keras komputer. Karena komputer terdiri dari banyak subsistem, waktu yang dibutuhkan untuk menjalankan tugas tertentu akan bergantung pada dua faktor utama: (1) kecepatan subsistem individu, dan (2) waktu yang dibutuhkan untuk mentransfer data di antara blok-blok ini. Gambar 4-5 menunjukkan diagram sederhana tentang komponen pembatas kecepatan terpenting pada komputer personalia biasa. Central Processing Unit (CPU) adalah jantung dari sistem. Seperti yang telah dijelaskan sebelumnya, terdiri dari selusin register, masing-masing mampu menahan 32 bit (pada komputer generasi sekarang). Juga termasuk dalam CPU adalah elektronik digital yang dibutuhkan untuk pengoperasian yang tidak sempurna, seperti memindahkan bit dan fixed point arithmetic. Matematika yang lebih terlibat ditangani dengan mentransfer data ke rangkaian perangkat keras khusus yang disebut coprocessor matematika (juga disebut unit logika aritmatika atau ALU). Coprocessor matematika mungkin terkandung dalam chip yang sama dengan CPU, atau mungkin juga perangkat elektronik terpisah. Sebagai contoh, penambahan dua bilangan floating point akan meminta CPU untuk mentransfer 8 byte (4 untuk setiap nomor) ke coprocessor matematika, dan beberapa byte yang menjelaskan apa yang harus dilakukan dengan data. Setelah waktu komputasi singkat, coprocessor matematika akan melewati empat byte kembali ke CPU, yang berisi bilangan floating point yaitu jumlah. Sistem komputer yang paling murah tidak memiliki coprocessor matematika, atau menyediakannya hanya sebagai pilihan. Sebagai contoh, mikroprosesor 80486DX memiliki coprocessor matematika internal, sedangkan 80486SX tidak. Sistem kinerja rendah ini menggantikan perangkat keras dengan perangkat lunak. Masing-masing fungsi matematika dipecah menjadi operasi biner dasar yang bisa ditangani langsung di dalam CPU. Meskipun ini memberikan hasil yang sama, waktu eksekusi jauh lebih lambat, katakanlah, faktor 10 sampai 20. Sebagian besar perangkat lunak komputer pribadi dapat digunakan dengan atau tanpa coprocessor matematika. Hal ini dilakukan dengan membuat compiler menghasilkan kode mesin untuk menangani kedua kasus tersebut, semuanya tersimpan dalam program executable akhir. Jika coprocessor matematika hadir pada komputer tertentu yang digunakan, satu bagian kode akan dijalankan. Jika coprocessor matematika tidak ada, bagian kode lainnya akan digunakan. Kompilator juga dapat diarahkan untuk menghasilkan kode hanya untuk satu dari situasi ini. Sebagai contoh, Anda kadang-kadang akan menemukan sebuah program yang mensyaratkan bahwa coprocessor matematika hadir, dan akan macet jika dijalankan di komputer yang tidak memilikinya. Aplikasi seperti pengolah kata biasanya tidak mendapat manfaat dari coprocessor matematika. Ini karena mereka melibatkan pemindahan data di memori, bukan perhitungan ekspresi matematis. Demikian juga, perhitungan yang melibatkan variabel titik tetap (bilangan bulat) tidak terpengaruh oleh adanya coprocessor matematika, karena ditangani di dalam CPU. Di sisi lain, kecepatan eksekusi DSP dan program komputasi lainnya dengan menggunakan perhitungan floating point dapat menjadi urutan besarnya berbeda dengan dan tanpa coprocessor matematika. CPU dan memori utama terkandung dalam chip terpisah di sebagian besar sistem komputer. Untuk alasan yang jelas, Anda ingin memori utama menjadi sangat besar dan sangat cepat. Sayangnya, ini membuat memori sangat mahal. Pengalihan data antara memori utama dan CPU merupakan kemacetan yang sangat umum untuk kecepatan. CPU meminta memori utama untuk informasi biner pada alamat memori tertentu, dan kemudian harus menunggu untuk menerima informasinya. Teknik yang umum untuk mengatasi masalah ini adalah dengan menggunakan cache memori. Ini adalah sejumlah kecil memori yang sangat cepat digunakan sebagai penyangga antara CPU dan memori utama. Beberapa ratus kilobyne khas. Ketika CPU meminta memori utama untuk menyediakan data biner pada alamat tertentu, elektronik digital kecepatan tinggi akan menyalin bagian memori utama di sekitar alamat ini ke dalam cache memori. Lain kali CPU meminta informasi memori, kemungkinan besar hal itu sudah terkandung dalam cache memori, sehingga pengambilannya sangat cepat. Ini didasarkan pada kenyataan bahwa program cenderung mengakses lokasi memori yang berada di dekat tetangga data yang sebelumnya diakses. Dalam aplikasi komputer khas, penambahan cache memori bisa meningkatkan kecepatan keseluruhan beberapa kali. Cache memori mungkin berada pada chip yang sama dengan CPU, atau mungkin juga perangkat elektronik eksternal. Tingkat di mana data dapat ditransfer antar subsistem bergantung pada jumlah garis data paralel yang disediakan, dan tingkat maksimum sinyal digital yang dapat dilalui sepanjang setiap baris. Data digital umumnya dapat ditransfer pada tingkat yang jauh lebih tinggi dalam satu chip dibandingkan dengan mentransfer data antara chip. Demikian juga, jalur data yang harus melewati konektor listrik ke papan sirkuit cetak lainnya (yaitu struktur bus) akan menjadi lebih lambat. Ini adalah motivasi yang kuat untuk memasukkan sebanyak mungkin barang elektronik ke dalam CPU. Masalah yang sangat buruk untuk kecepatan komputer adalah kompatibilitas ke belakang. Ketika sebuah perusahaan komputer memperkenalkan produk baru, katakanlah kartu akuisisi data atau program perangkat lunak, mereka ingin menjualnya ke pasar terbesar. Ini berarti bahwa itu harus kompatibel dengan sebagian besar komputer yang saat ini digunakan, yang bisa mencakup beberapa generasi teknologi. Hal ini sering membatasi kinerja perangkat keras atau perangkat lunak dengan sistem yang jauh lebih tua. Misalnya, Anda membeli kartu IO yang dihubungkan ke bus komputer pribadi Pentium 200 MHz Anda, yang menyediakan delapan jalur digital yang dapat mentransmisikan dan menerima data satu byte dalam satu waktu. Anda kemudian menulis sebuah program perakitan untuk mentransfer data antara komputer Anda dengan beberapa perangkat eksternal dengan cepat, seperti percobaan ilmiah atau komputer lain. Yang mengejutkan, kecepatan transfer data maksimum hanya sekitar 100.000 byte per detik, lebih dari seribu kali lebih lambat dari pada clock rate mikroprosesor. Penjahat adalah bus ISA, sebuah teknologi yang kompatibel dengan komputer pada awal 1980an. Tabel 4-6 menyediakan waktu eksekusi untuk beberapa generasi komputer. Jelas, Anda harus memperlakukan ini sebagai perkiraan yang sangat kasar. Jika Anda ingin memahami sistem Anda, lakukan pengukuran di sistem Anda. Cukup mudah menulis satu putaran yang mengeksekusi satu juta dari beberapa operasi, dan gunakan jam tangan Anda ke waktu berapa lama waktu yang dibutuhkan. Tiga sistem pertama, 80286, 80486, dan Pentium, adalah komputer pribadi kelas atas masing-masing pada tahun 1986, 1993 dan 1996. Ke depannya adalah mikroprosesor tahun 1994 yang dirancang khusus untuk tugas DSP, Texas Instruments TMS320C40. Pentium lebih cepat dari pada sistem 80286 karena empat alasan, (1) kecepatan clock yang lebih besar, (2) lebih banyak jalur pada bus data, (3) penambahan cache memori, dan (4) desain internal yang lebih efisien, Membutuhkan lebih sedikit siklus clock per instruksi. Jika Pentium adalah Cadillac, TMS320C40 akan menjadi Ferrari: kurang nyaman, tapi kecepatan menyilaukan. Chip ini mewakili beberapa prosesor mikro yang dirancang khusus untuk mengurangi waktu eksekusi algoritma DSP. Lain dalam kategori ini adalah Intel i860, ATampT DSP3210, Motorola DSP96002, dan Analog Devices ADSP-2171. Ini sering pergi dengan nama: DSP mikroprosesor. Atau RISC (Reduced Instruction Set Computer). Nama terakhir ini mencerminkan bahwa peningkatan kecepatan dihasilkan dari instruksi tingkat perakitan yang lebih sedikit yang tersedia bagi pemrogram. Sebagai perbandingan, mikroprosesor yang lebih tradisional, seperti Pentium, disebut CISC (Complex Instruction Set Computer). Mikroprosesor DSP digunakan dalam dua cara: sebagai modul budak di bawah kendali komputer yang lebih konvensional, atau sebagai prosesor tertanam dalam aplikasi khusus, seperti telepon seluler. Beberapa model hanya menangani nomor titik tetap, sementara yang lain bisa bekerja dengan floating point. Arsitektur internal yang digunakan untuk mendapatkan peningkatan kecepatan meliputi: (1) banyak memori cache yang sangat cepat yang terdapat di dalam chip, (2) bus terpisah untuk program dan data, yang memungkinkan keduanya diakses bersamaan (disebut Arsitektur Harvard) (3) perangkat keras yang cepat untuk perhitungan matematika yang terkandung langsung di mikroprosesor, dan (4) desain pipa. Arsitektur pipa mematahkan perangkat keras yang dibutuhkan untuk beberapa tugas tertentu dalam beberapa tahap berturut-turut. Misalnya, penambahan dua angka bisa dilakukan dalam tiga tahap pipa. Tahap pertama dari pipa tidak melakukan apapun kecuali mengambil nomor yang akan ditambahkan dari memori. Satu-satunya tugas tahap kedua adalah menambahkan dua angka itu bersama-sama. Tahap ketiga tidak melakukan apapun kecuali menyimpan hasilnya di memori. Jika setiap tahap dapat menyelesaikan tugasnya dalam satu siklus clock, keseluruhan prosedur akan memakan waktu tiga siklus clock untuk dijalankan. Fitur utama dari struktur pipa adalah tugas lain dapat dimulai sebelum tugas sebelumnya selesai. Dalam contoh ini, kita bisa memulai penambahan dua angka lagi begitu tahap pertama menganggur, pada akhir siklus clock pertama. Untuk sejumlah besar operasi, kecepatan sistem akan dikutip sebagai satu penambahan per siklus clock, meskipun penambahan dua angka membutuhkan tiga siklus clock untuk menyelesaikannya. Pipa sangat bagus untuk kecepatan, tapi bisa sulit diprogram. Algoritma harus memungkinkan perhitungan baru dimulai, walaupun hasil perhitungan sebelumnya tidak tersedia (karena masih dalam jalur pipa). Ilmuwan dan Insinyur Panduan untuk Pengolahan Sinyal Digital Oleh Steven W. Smith, Ph. D. Bab 6: Konvolusi Mari merangkum cara memahami bagaimana sistem mengubah sinyal masukan menjadi sinyal keluaran. Pertama, sinyal input dapat didekomposisi menjadi satu set impuls, yang masing-masing dapat dilihat sebagai fungsi delta skala dan bergeser. Kedua, output yang dihasilkan dari masing-masing impuls adalah versi skala respons bergeser dan bergeser. Ketiga, sinyal keluaran keseluruhan dapat ditemukan dengan menambahkan respons impuls skala dan pergeseran ini. Dengan kata lain, jika kita mengetahui respon impuls sistem, maka kita bisa menghitung berapa output yang akan dihasilkan untuk setiap kemungkinan sinyal masukan. Ini berarti kita tahu segalanya tentang sistem. Tidak ada lagi yang bisa dipelajari tentang karakteristik sistem linier. (Namun, di bab selanjutnya kita akan menunjukkan bahwa informasi ini dapat diwakili dalam berbagai bentuk). Respons impuls lewat nama yang berbeda dalam beberapa aplikasi. Jika sistem yang sedang dipertimbangkan adalah filter. Respon impuls disebut sebagai saringan kernel. Kernel konvolusi Atau hanya, kernel. Dalam pengolahan citra, respon impuls disebut fungsi titik penyebaran. Sementara istilah ini digunakan dengan cara yang sedikit berbeda, semua berarti sama, sinyal yang dihasilkan oleh sistem saat input adalah fungsi delta. Konvolusi adalah operasi matematika formal, sama seperti perkalian, penambahan, dan integrasi. Penambahan mengambil dua angka dan menghasilkan angka ketiga. Sementara konvolusi mengambil dua sinyal dan menghasilkan sinyal ketiga. Konvolusi digunakan dalam matematika berbagai bidang, seperti probabilitas dan statistik. Dalam sistem linear, konvolusi digunakan untuk menggambarkan hubungan antara tiga sinyal yang diminati: sinyal input, respon impuls, dan sinyal keluaran. Gambar 6-2 menunjukkan notasi saat konvolusi digunakan dengan sistem linier. Sinyal masukan, x n, memasuki sistem linier dengan respon impuls, h n, menghasilkan sinyal keluaran, y n. Dalam bentuk persamaan: x n h n y n. Dinyatakan dalam kata-kata, sinyal input yang diputar dengan respons impuls sama dengan sinyal output. Sama seperti penambahan diwakili oleh plus,, dan perkalian oleh salib, kali, konvolusi diwakili oleh bintang,. Sangat disayangkan bahwa kebanyakan bahasa pemrograman juga menggunakan bintang untuk menunjukkan perkalian. Bintang dalam program komputer berarti perkalian, sementara bintang dalam sebuah persamaan berarti konvolusi. Gambar 6-3 menunjukkan konvolusi yang digunakan untuk penyaringan low-pass dan high-pass. Contoh sinyal masukan adalah jumlah dua komponen: tiga siklus gelombang sinus (mewakili frekuensi tinggi), ditambah jalan yang perlahan naik (terdiri dari frekuensi rendah). Dalam (a), respon impuls untuk filter low-pass adalah lengkungan yang mulus, sehingga hanya bentuk gelombang jalan yang perlahan berubah yang dilewatkan ke output. Demikian pula, filter high-pass, (b), hanya memungkinkan sinusoid yang berubah dengan cepat untuk dilewati. Gambar 6-4 mengilustrasikan dua contoh tambahan bagaimana konvolusi digunakan untuk memproses sinyal. Atenuator pembalik, (a), membalik sinyal ke atas-ke-bawah, dan mengurangi amplitudonya. Turunan diskrit (juga disebut perbedaan pertama), ditunjukkan pada (b), menghasilkan sinyal keluaran yang terkait dengan kemiringan sinyal input. Perhatikan panjang sinyal pada Gambar. 6-3 dan 6-4. Sinyal input adalah 81 sampel panjang, sementara masing-masing respon impuls terdiri dari 31 sampel. Dalam kebanyakan aplikasi DSP, sinyal inputnya ratusan, ribuan, atau bahkan jutaan sampel. Respons impuls biasanya jauh lebih pendek, katakanlah, beberapa poin ke beberapa ratus poin. Matematika di balik konvolusi tidak membatasi berapa lama sinyal ini berada. Namun, ia menentukan panjang sinyal output. Panjang sinyal output sama dengan panjang sinyal input, ditambah panjang respon impuls, minus satu. Untuk sinyal pada Gambar. 6-3 dan 6-4, masing-masing sinyal output adalah: 81 31 - 1 111 sampel panjang. Sinyal input berjalan dari sampel 0 sampai 80, respon impuls dari sampel 0 sampai 30, dan sinyal keluaran dari sampel 0 sampai 110. Sekarang kita sampai pada matematika yang rinci tentang konvolusi. Seperti yang digunakan dalam Digital Signal Processing, konvolusi dapat dipahami dengan dua cara yang terpisah. Yang pertama terlihat pada konvolusi dari sudut pandang sinyal input. Ini melibatkan analisis bagaimana setiap sampel dalam sinyal input memberikan kontribusi pada banyak titik pada sinyal output. Cara kedua melihat konvolusi dari sudut pandang sinyal output. Ini mengkaji bagaimana setiap sampel pada sinyal output menerima informasi dari banyak titik pada sinyal input. Ingatlah bahwa kedua perspektif ini berbeda cara berpikir tentang operasi matematis yang sama. Sudut pandang pertama penting karena memberikan pemahaman konseptual tentang bagaimana konvolusi berkaitan dengan DSP. Sudut pandang kedua menggambarkan matematika konvolusi. Ini menggambarkan salah satu tugas tersulit yang akan Anda hadapi di DSP: membuat pemahaman konseptual Anda sesuai dengan tumpukan matematika yang digunakan untuk mengkomunikasikan gagasan. Eksekusi Pikiran Bergerak Rata-rata (EMA) Dijelaskan Seperti yang telah kami katakan pada pelajaran sebelumnya, rata-rata pergerakan sederhana dapat terjadi. Terdistorsi oleh paku. Kita akan mulai dengan sebuah contoh. Katakanlah kita merencanakan SMA 5-periode pada grafik harian EURUSD. Harga penutupan untuk 5 hari terakhir adalah sebagai berikut: Rata-rata pergerakan sederhana akan dihitung sebagai berikut: (1.3172 1.3231 1.3164 1.3186 1.3293) 5 1.3209 Cukup sederhana, benar Nah bagaimana jika ada laporan berita Hari 2 yang menyebabkan euro Untuk menjatuhkan seluruh papan. Hal ini menyebabkan EURUSD merosot dan ditutup pada 1,3000. Mari lihat apa efeknya pada 5 periode SMA ini. Rata-rata pergerakan sederhana akan dihitung sebagai berikut: Hasil dari rata-rata pergerakan sederhana akan jauh lebih rendah dan akan memberi Anda gagasan bahwa harganya benar-benar turun, padahal kenyataannya, Hari 2 hanyalah sebuah acara satu kali. Disebabkan oleh buruknya hasil sebuah laporan ekonomi. Poin yang ingin kita buat adalah bahwa terkadang rata-rata bergerak sederhana mungkin terlalu sederhana. Kalau saja ada cara agar Anda bisa memfilter lonjakan ini sehingga Anda tidak akan mendapatkan ide yang salah. Hmm8230 Tunggu sebentar. Ya, ada cara It8217 yang disebut Exponential Moving Average Exponential moving averages (EMA) memberi bobot lebih banyak pada periode terbaru. Dalam contoh di atas, EMA akan memberi bobot lebih pada harga pada hari-hari terakhir, yang akan menjadi Hari 3, 4, dan 5. Ini berarti bahwa lonjakan pada Hari ke 2 akan bernilai lebih rendah dan tidak akan sebesar Sebuah efek pada moving average karena jika kita menghitung untuk moving average sederhana. Jika Anda memikirkannya, ini sangat masuk akal karena apa yang dilakukan ini lebih menekankan pada apa yang dilakukan pedagang baru-baru ini. Exponential Moving Average (EMA) dan Simple Moving Average (SMA) Side By Side Mari kita melihat grafik 4 jam USDJPY untuk menyoroti bagaimana rata-rata bergerak sederhana (SMA) dan eksponensial moving average (EMA) akan terlihat berdampingan. Pada grafik. Perhatikan bagaimana garis merah (30 EMA) nampaknya lebih mendekati harga dibanding garis biru (SMA 30). Ini berarti bahwa hal itu lebih akurat mewakili tindakan harga terkini. Anda mungkin bisa menebak mengapa ini terjadi. Ini karena rata-rata bergerak eksponensial lebih menekankan pada apa yang telah terjadi akhir-akhir ini. Saat berdagang, jauh lebih penting untuk melihat apa yang dilakukan pedagang SEKARANG daripada apa yang mereka lakukan minggu lalu atau bulan lalu. Simpan kemajuan Anda dengan masuk dan menandai pelajaran selesai

No comments:

Post a Comment