Pada akhir 1990-an, ketika saya masih di sekolah pascasarjana, kertas
JH Saltzer; DP Reed; DD Clark: Argumen ujung ke ujung dalam desain sistem . ACM Trans. Komputasi. Syst. 2 (4): 277-288, 1984. DOI = 10.1145 / 357401.357402
cukup banyak bacaan wajib di setiap kelas sistem operasi di setiap universitas, dan tampaknya masih menjadi salah satu prinsip panduan utama yang mendasari desain internet. (Lihat misalnya: J Kempf, R Austein (eds), dan IAB, " Bangkitnya Pertengahan dan Masa Depan dari ujung ke ujung: Refleksi tentang Evolusi Arsitektur Internet ," RFC 3724, Maret 2004. )
Status prinsip ujung ke ujung (Saltzer et al., 1984):
[Jika] fungsi yang dipermasalahkan hanya dapat diimplementasikan dengan sepengetahuan dan bantuan aplikasi pada titik akhir sistem komunikasi, ..., asalkan fungsi yang dipertanyakan itu sebagai fitur dari sistem komunikasi itu sendiri tidak bisa jadi. [Meskipun] terkadang versi yang tidak lengkap dari fungsi yang disediakan oleh sistem komunikasi mungkin berguna sebagai peningkatan kinerja.
Atau lebih singkat (dari abstrak):
Argumen ujung ke ujung menunjukkan bahwa fungsi yang ditempatkan pada level rendah dari suatu sistem mungkin berlebihan atau sedikit nilainya bila dibandingkan dengan biaya penyediaannya pada level rendah itu.
Tapi saya sudah sedikit berhasil menerapkan prinsip ujung ke ujung dalam pengalaman saya sendiri (yaitu dalam arsitektur komputer, bukan arsitektur internet). Karena prinsip tersebut dinyatakan sebagai "puisi" (yaitu, dalam prosa bahasa Inggris dengan sekelompok istilah yang tidak didefinisikan secara matematis), cukup mudah untuk membodohi diri sendiri dengan berpikir bahwa "fungsi yang dimaksud dapat sepenuhnya dan benar diimplementasikan hanya dengan pengetahuan dan bantuan aplikasi. " Tapi apa "fungsi yang dimaksud," apalagi "pengetahuan dan bantuan" aplikasi?
Contoh: Jaringan on-chip (tidak seperti internet) tidak diizinkan untuk menjatuhkan paket, tetapi memiliki buffering yang sangat terbatas, jadi Anda perlu memiliki beberapa cara untuk menghindari atau memulihkan dari kebuntuan. Di sisi lain, aplikasi juga perlu membuat jalan buntu gratis, kan? Jadi saya mungkin beralasan bahwa saya harus membuat kasus umum (tidak ada deadlock) cepat dan mendorong penghindaran deadlock pada aplikasi. Ini, pada kenyataannya, apa yang kami coba pada Alewife dan Fugu (Mackenzie, et al., Memanfaatkan Pengiriman Dua Kasus untuk Pesan yang Dilindungi dengan Cepat , Int'l Symp High-Perf Comp Arch, (HPCA-4): 231-242, 1998. Atau disertasi John Kubiatowicz.) Ini "bekerja," (dengan interkoneksi mengganggu prosesor ketika buffer terisi dan memiliki penambahan OS dengan buffering perangkat lunak) tetapi saya belum melihat siapa pun di dunia akademis atau industri (termasuk kita yang merupakan penulis pada hal itu). Kertas HPCA) berlomba mencoba mereplikasi ide tersebut. Jadi rupanya penghindaran kebuntuan dalam suatu jaringan bukanlah "fungsi yang dipermasalahkan" yang sama dengan penghindaran kebuntuan tingkat aplikasi, atau prinsip ujung ke ujung salah.
Apakah mungkin untuk mengubah prinsip ujung ke ujung dari "puisi" menjadi teorema? Atau setidaknya, dapatkah hal itu dinyatakan dalam istilah yang dapat dimengerti oleh seorang arsitek komputer?