有用なコンピューティングデバイスにはフィードバックが必要です。これにより、1つの回路要素で本質的に無制限の数の逐次計算を実行できるようになります。使用可能なフィードバック回路には、入力の合計数(出力からフィードバックされたものとそうでないものの両方をカウントする)が、入力にフィードバックされる出力の数(入力の数が回路が外部刺激にまったく応答しなかった場合、tはフィードバック出力の数を超えます)。完全に可逆な論理関数は、出力よりも多くの入力を持つことができないため、非自明な計算タスクを繰り返し実行するために必要なフィードバック構造をそれらから構築することはできません。現在のコンピューターで使用されているCMOS技術では、信号が到着する相対的なタイミングではない場合、回路のさまざまな部分での計算によって報告された結果を他の部分で同時に利用できるようにするためのフィードバックが必要であることに注意してください完全に下流に渡すことができなかった「情報」を構成します。他の技術では、可逆性を維持しながら、多くのゲートで正確に同じ速度で信号を伝搬させることができますが、実用的な技術はありません。
CSの観点からは、ステップ数に各ステップで変化する可能性のある状態の量を掛けたサイズに本質的に比例する初期の空の記憶媒体がある場合、コンピューティングプロセスを可逆的にするのは簡単です。この主張は、前の段落の主張と矛盾しません。なぜなら、ステップ数に比例するストレージにはステップ数に比例する回路が必要であり、これはすべてのフィードバックが除去された場合に必要な量に比例する回路を意味するからです。
適切な入力条件が与えられても、それらが決して高くならない場合に無視される出力を持つことが許可されている場合、理論的には可逆ロジックの恩恵を受けるシステムを設計することが可能かもしれません。たとえば、256ワードのRAMチャンクで動作するアルゴリズムがあり、1秒間に1,000,000の操作を実行し、各操作でレジスタ、プログラムカウンター、または1つを更新する「リバーシブルロジックCPU」を使用したい場合RAMのワードでは、次のような「リバーシブルCPU」を使用できます。
- 大量の命令を実行し、それぞれで、LIFOバッファーに上書きされたものを送信します
- 大量の命令が実行された後、RAMを最初の空白の「転送」バッファにコピーします
- LIFOの値を使用して、すべての計算を逆に実行します
- メインRAMの内容を転送バッファーで上書きします。これはプロセスで消去されます。
上記のレシピを何度でも繰り返して、任意の数のステップでアルゴリズムを実行できます。レシピの最後のステップだけは元に戻せません。非可逆操作でアルゴリズムのステップごとに消費されるエネルギー量は、LIFOのサイズに反比例するため、十分に大きいLIFOを構築するために構築する場合は、任意に小さくすることができます。
しかし、その能力をあらゆる種類のエネルギー節約に変換するには、情報が入力されたときにエネルギーを保存し、読み取られたときにそのエネルギーを有効に戻すLIFOが必要です。さらに、LIFOは、それを使用するエネルギーコストが有効に節約されたエネルギー量よりも少なくなるのに十分なステップの状態データを保持するのに十分な大きさでなければなりません。実際のFIFOからNバイトを保存および取得する際に失われるエネルギー量がO(1)になる可能性は低いことを考えると、Nの増加がエネルギー消費を有意に削減するかどうかは不明です。