Tidak dijawab pada pos @ Majenko: Ya, dengan clock 8MHz, setiap baris akan menghabiskan waktu ganda. Kecuali jika saluran menunggu sesuatu yang tidak digerakkan oleh jam - mis. Input eksternal.
Selain jawaban @ Majenko, CPU memiliki jam untuk memastikan instruksi lengkap, sebelum langkah berikutnya dimulai. CPU terbuat dari banyak transistor (saya menemukan referensi yang menunjukkan bahwa AtMega berada di kisaran jutaan yang rendah, memberi atau menerima urutan besarnya).
Selama siklus, listrik mengalir melalui chip, menghidupkan / mematikan transistor, yang hasilnya akan menghidupkan / mematikan lebih banyak transistor, dan seterusnya di telepon. Saat ini terjadi, beberapa bagian chip memiliki nilai "salah" - Anda dapat menganggap ini sebagai setengah jalan melalui perhitungan (Anda telah menambahkan kolom seseorang dan kolom 10-an, dan akan memulai pada Kolom 100-an). Anda tidak ingin ini memengaruhi dunia luar, jadi (misalnya) pin output Anda terkunci - ditahan pada nilai berapapun nilainya - hingga instruksi selesai. Berapa lama waktu yang dibutuhkan untuk menyelesaikan suatu instruksi bervariasi, tetapi pabrikan mengerjakan instruksi yang paling lambat dalam situasi terburuk.
Untuk AtMega (yang merupakan chip pada Arduino), Atmel (yang merancang chip) telah menyatakan ini 1/20.000.000 per detik - ini adalah 20MHz.
Perhatikan bahwa tidak semua mikroprosesor menjalankan semua instruksi mereka pada 1 instruksi per siklus - beberapa instruksi mungkin memerlukan 1, atau 2, atau 10 siklus. Pipelining membuat segalanya menjadi lebih rumit - prosesor mungkin melakukan beberapa pekerjaan (misalnya mengambil instruksi berikutnya) dalam satu siklus, menjalankannya di siklus berikutnya - tetapi ketika sedang menjalankan instruksi 1, itu juga dapat mengambil instruksi berikutnya. Untuk melakukan ini, mungkin perlu menebak instruksi yang akan datang berikutnya (dalam kasus kode mesin setara dengan "goto" - seperti digunakan untuk loop), dan jika tebakan salah, itu harus mengatasi bahwa; membuang instruksi yang diambil dan mengambil yang berikutnya, kehilangan siklus.
Halaman Wikipedia pada pipelining instruksi menunjukkan contoh pipelining chip RISC dalam 5 tahap - pengambilan instruksi, dekode instruksi, eksekusi, akses memori, dan penulisan kembali. Jadi, Anda dapat memiliki 5 instruksi pada tahap eksekusi, tumpang tindih. Sampai fase "writeback", instruksi tidak memiliki efek nyata. Anda dapat menganggap ini sebagai jalur perakitan - dibutuhkan 7 menit untuk menyatukan widget, tetapi dapat dibagi menjadi 5 tahap, tahap terpanjang yang memakan waktu 2 menit. Sekali setiap dua menit, masing-masing widget yang sebagian selesai dipindahkan oleh jalur perakitan ke stasiun berikutnya. Anda mengeluarkan satu widget setiap dua menit - "Jam" hanya dapat mencentang secepat langkah paling lambat. Jika Anda mendorong widget lebih cepat, "bottleneck" akan semakin banyak widget yang di-antri.