Di masa lalu, prosesor tidak memiliki instruksi tumpukan, dan bahasa pemrograman tidak mendukung rekursi. Seiring waktu, semakin banyak bahasa memilih untuk mendukung rekursi, dan perangkat keras mengikuti paket dengan kemampuan alokasi bingkai tumpukan. Dukungan ini sangat bervariasi selama bertahun-tahun dengan prosesor yang berbeda. Beberapa prosesor mengadopsi stack frame dan / atau register stack pointer; beberapa instruksi yang diadopsi akan menyelesaikan alokasi frame tumpukan dalam satu instruksi.
Saat prosesor maju dengan level tunggal, lalu cache multi-level, satu keuntungan penting dari stack adalah lokalitas cache. Bagian atas tumpukan hampir selalu ada dalam cache. Setiap kali Anda dapat melakukan sesuatu yang memiliki tingkat hit cache yang besar, Anda berada di jalur yang benar dengan prosesor modern. Cache yang diterapkan ke tumpukan berarti bahwa variabel lokal, parameter, dll. Hampir selalu ada dalam cache, dan menikmati tingkat kinerja tertinggi.
Singkatnya, penggunaan stack berevolusi baik dalam perangkat keras maupun perangkat lunak. Ada model lain (misalnya komputasi aliran data dicoba untuk jangka waktu yang lama), namun, lokalitas tumpukan membuatnya berfungsi dengan sangat baik. Lebih lanjut, kode prosedural adalah apa yang prosesor inginkan, untuk kinerja: satu instruksi mengatakan apa yang harus dilakukan setelah yang lain. Ketika instruksi keluar dari urutan linier, prosesor melambat sangat, setidaknya sampai sekarang, karena kita belum menemukan cara untuk membuat akses acak secepat akses berurutan. (Btw, ada masalah serupa di setiap level memori, dari cache, ke memori utama, ke disk ...)
Antara kinerja yang ditunjukkan dari instruksi akses sekuensial dan perilaku cache yang menguntungkan dari tumpukan panggilan, kami memiliki, setidaknya saat ini, model kinerja yang unggul.
(Kami mungkin juga melemparkan keterputusan struktur data ke dalam karya ...)
Ini tidak berarti bahwa model pemrograman lain tidak dapat berfungsi, terutama ketika mereka dapat diterjemahkan ke dalam instruksi berurutan dan memanggil model tumpukan perangkat keras saat ini. Tetapi ada keuntungan berbeda untuk model yang mendukung di mana perangkat keras berada. Namun, hal-hal tidak selalu tetap sama, jadi kita bisa melihat perubahan di masa depan karena teknologi memori dan transistor yang berbeda memungkinkan untuk lebih paralelisme. Selalu ada olok-olok antara bahasa pemrograman dan kemampuan perangkat keras, jadi, kita akan lihat!