From bedd2aa711c2628c050a0ec86d9f4f0cbcf71a52 Mon Sep 17 00:00:00 2001 From: Daniel Lubarov Date: Sat, 19 Feb 2022 18:32:11 -0700 Subject: [PATCH] Rename arithmetic unit to ALU (#496) --- system_zero/src/{arithmetic => alu}/addition.rs | 2 +- system_zero/src/{arithmetic => alu}/division.rs | 2 +- system_zero/src/{arithmetic => alu}/mod.rs | 16 ++++++++-------- .../src/{arithmetic => alu}/multiplication.rs | 2 +- .../src/{arithmetic => alu}/subtraction.rs | 2 +- system_zero/src/lib.rs | 2 +- .../src/registers/{arithmetic.rs => alu.rs} | 10 +++++----- system_zero/src/registers/mod.rs | 6 +++--- system_zero/src/system_zero.rs | 12 +++++------- 9 files changed, 26 insertions(+), 28 deletions(-) rename system_zero/src/{arithmetic => alu}/addition.rs (98%) rename system_zero/src/{arithmetic => alu}/division.rs (96%) rename system_zero/src/{arithmetic => alu}/mod.rs (80%) rename system_zero/src/{arithmetic => alu}/multiplication.rs (96%) rename system_zero/src/{arithmetic => alu}/subtraction.rs (96%) rename system_zero/src/registers/{arithmetic.rs => alu.rs} (84%) diff --git a/system_zero/src/arithmetic/addition.rs b/system_zero/src/alu/addition.rs similarity index 98% rename from system_zero/src/arithmetic/addition.rs rename to system_zero/src/alu/addition.rs index 7aa0d81a..068092e8 100644 --- a/system_zero/src/arithmetic/addition.rs +++ b/system_zero/src/alu/addition.rs @@ -7,7 +7,7 @@ use plonky2::plonk::circuit_builder::CircuitBuilder; use plonky2::plonk::plonk_common::reduce_with_powers_ext_recursive; use starky::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsumer}; -use crate::registers::arithmetic::*; +use crate::registers::alu::*; use crate::registers::NUM_COLUMNS; pub(crate) fn generate_addition(values: &mut [F; NUM_COLUMNS]) { diff --git a/system_zero/src/arithmetic/division.rs b/system_zero/src/alu/division.rs similarity index 96% rename from system_zero/src/arithmetic/division.rs rename to system_zero/src/alu/division.rs index e91288b9..f0d645f1 100644 --- a/system_zero/src/arithmetic/division.rs +++ b/system_zero/src/alu/division.rs @@ -6,7 +6,7 @@ use plonky2::iop::ext_target::ExtensionTarget; use plonky2::plonk::circuit_builder::CircuitBuilder; use starky::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsumer}; -use crate::registers::arithmetic::*; +use crate::registers::alu::*; use crate::registers::NUM_COLUMNS; pub(crate) fn generate_division(values: &mut [F; NUM_COLUMNS]) { diff --git a/system_zero/src/arithmetic/mod.rs b/system_zero/src/alu/mod.rs similarity index 80% rename from system_zero/src/arithmetic/mod.rs rename to system_zero/src/alu/mod.rs index a2b3a4f8..17a12df1 100644 --- a/system_zero/src/arithmetic/mod.rs +++ b/system_zero/src/alu/mod.rs @@ -7,16 +7,16 @@ use starky::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsume use starky::vars::StarkEvaluationTargets; use starky::vars::StarkEvaluationVars; -use crate::arithmetic::addition::{eval_addition, eval_addition_recursively, generate_addition}; -use crate::arithmetic::division::{eval_division, eval_division_recursively, generate_division}; -use crate::arithmetic::multiplication::{ +use crate::alu::addition::{eval_addition, eval_addition_recursively, generate_addition}; +use crate::alu::division::{eval_division, eval_division_recursively, generate_division}; +use crate::alu::multiplication::{ eval_multiplication, eval_multiplication_recursively, generate_multiplication, }; -use crate::arithmetic::subtraction::{ +use crate::alu::subtraction::{ eval_subtraction, eval_subtraction_recursively, generate_subtraction, }; use crate::public_input_layout::NUM_PUBLIC_INPUTS; -use crate::registers::arithmetic::*; +use crate::registers::alu::*; use crate::registers::NUM_COLUMNS; mod addition; @@ -24,7 +24,7 @@ mod division; mod multiplication; mod subtraction; -pub(crate) fn generate_arithmetic_unit(values: &mut [F; NUM_COLUMNS]) { +pub(crate) fn generate_alu(values: &mut [F; NUM_COLUMNS]) { if values[IS_ADD].is_one() { generate_addition(values); } else if values[IS_SUB].is_one() { @@ -36,7 +36,7 @@ pub(crate) fn generate_arithmetic_unit(values: &mut [F; NUM_COL } } -pub(crate) fn eval_arithmetic_unit>( +pub(crate) fn eval_alu>( vars: StarkEvaluationVars, yield_constr: &mut ConstraintConsumer

, ) { @@ -54,7 +54,7 @@ pub(crate) fn eval_arithmetic_unit>( eval_division(local_values, yield_constr); } -pub(crate) fn eval_arithmetic_unit_recursively, const D: usize>( +pub(crate) fn eval_alu_recursively, const D: usize>( builder: &mut CircuitBuilder, vars: StarkEvaluationTargets, yield_constr: &mut RecursiveConstraintConsumer, diff --git a/system_zero/src/arithmetic/multiplication.rs b/system_zero/src/alu/multiplication.rs similarity index 96% rename from system_zero/src/arithmetic/multiplication.rs rename to system_zero/src/alu/multiplication.rs index 70c181d8..a88b42f6 100644 --- a/system_zero/src/arithmetic/multiplication.rs +++ b/system_zero/src/alu/multiplication.rs @@ -6,7 +6,7 @@ use plonky2::iop::ext_target::ExtensionTarget; use plonky2::plonk::circuit_builder::CircuitBuilder; use starky::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsumer}; -use crate::registers::arithmetic::*; +use crate::registers::alu::*; use crate::registers::NUM_COLUMNS; pub(crate) fn generate_multiplication(values: &mut [F; NUM_COLUMNS]) { diff --git a/system_zero/src/arithmetic/subtraction.rs b/system_zero/src/alu/subtraction.rs similarity index 96% rename from system_zero/src/arithmetic/subtraction.rs rename to system_zero/src/alu/subtraction.rs index 267bac72..8f8bb810 100644 --- a/system_zero/src/arithmetic/subtraction.rs +++ b/system_zero/src/alu/subtraction.rs @@ -6,7 +6,7 @@ use plonky2::iop::ext_target::ExtensionTarget; use plonky2::plonk::circuit_builder::CircuitBuilder; use starky::constraint_consumer::{ConstraintConsumer, RecursiveConstraintConsumer}; -use crate::registers::arithmetic::*; +use crate::registers::alu::*; use crate::registers::NUM_COLUMNS; pub(crate) fn generate_subtraction(values: &mut [F; NUM_COLUMNS]) { diff --git a/system_zero/src/lib.rs b/system_zero/src/lib.rs index 1c097573..35576cd3 100644 --- a/system_zero/src/lib.rs +++ b/system_zero/src/lib.rs @@ -2,7 +2,7 @@ #![allow(dead_code)] #![allow(unused_variables)] -mod arithmetic; +mod alu; mod core_registers; mod memory; mod permutation_unit; diff --git a/system_zero/src/registers/arithmetic.rs b/system_zero/src/registers/alu.rs similarity index 84% rename from system_zero/src/registers/arithmetic.rs rename to system_zero/src/registers/alu.rs index 92c0d2c3..b4f82dff 100644 --- a/system_zero/src/registers/arithmetic.rs +++ b/system_zero/src/registers/alu.rs @@ -1,13 +1,13 @@ -//! Arithmetic unit. +//! Arithmetic and logic unit. -pub(crate) const IS_ADD: usize = super::START_ARITHMETIC; +pub(crate) const IS_ADD: usize = super::START_ALU; pub(crate) const IS_SUB: usize = IS_ADD + 1; pub(crate) const IS_MUL: usize = IS_SUB + 1; pub(crate) const IS_DIV: usize = IS_MUL + 1; const START_SHARED_COLS: usize = IS_DIV + 1; -/// Within the arithmetic unit, there are shared columns which can be used by any arithmetic +/// Within the ALU, there are shared columns which can be used by any arithmetic/logic /// circuit, depending on which one is active this cycle. // Can be increased as needed as other operations are implemented. const NUM_SHARED_COLS: usize = 3; @@ -26,7 +26,7 @@ pub(crate) const COL_ADD_INPUT_3: usize = shared_col(2); // Note: Addition outputs three 16-bit chunks, and since these values need to be range-checked // anyway, we might as well use the range check unit's columns as our addition outputs. So the -// three proceeding columns are basically aliases, not columns owned by the arithmetic unit. +// three proceeding columns are basically aliases, not columns owned by the ALU. /// The first 16-bit chunk of the output, based on little-endian ordering. pub(crate) const COL_ADD_OUTPUT_1: usize = super::range_check_16::col_rc_16_input(0); /// The second 16-bit chunk of the output, based on little-endian ordering. @@ -34,4 +34,4 @@ pub(crate) const COL_ADD_OUTPUT_2: usize = super::range_check_16::col_rc_16_inpu /// The third 16-bit chunk of the output, based on little-endian ordering. pub(crate) const COL_ADD_OUTPUT_3: usize = super::range_check_16::col_rc_16_input(2); -pub(super) const END: usize = super::START_ARITHMETIC + NUM_SHARED_COLS; +pub(super) const END: usize = super::START_ALU + NUM_SHARED_COLS; diff --git a/system_zero/src/registers/mod.rs b/system_zero/src/registers/mod.rs index 134a28bf..12688b1c 100644 --- a/system_zero/src/registers/mod.rs +++ b/system_zero/src/registers/mod.rs @@ -1,4 +1,4 @@ -pub(crate) mod arithmetic; +pub(crate) mod alu; pub(crate) mod boolean; pub(crate) mod core; pub(crate) mod logic; @@ -8,8 +8,8 @@ pub(crate) mod permutation; pub(crate) mod range_check_16; pub(crate) mod range_check_degree; -const START_ARITHMETIC: usize = 0; -const START_BOOLEAN: usize = arithmetic::END; +const START_ALU: usize = 0; +const START_BOOLEAN: usize = alu::END; const START_CORE: usize = boolean::END; const START_LOGIC: usize = core::END; const START_LOOKUP: usize = logic::END; diff --git a/system_zero/src/system_zero.rs b/system_zero/src/system_zero.rs index cd7796d7..c42a04a8 100644 --- a/system_zero/src/system_zero.rs +++ b/system_zero/src/system_zero.rs @@ -10,9 +10,7 @@ use starky::stark::Stark; use starky::vars::StarkEvaluationTargets; use starky::vars::StarkEvaluationVars; -use crate::arithmetic::{ - eval_arithmetic_unit, eval_arithmetic_unit_recursively, generate_arithmetic_unit, -}; +use crate::alu::{eval_alu, eval_alu_recursively, generate_alu}; use crate::core_registers::{ eval_core_registers, eval_core_registers_recursively, generate_first_row_core_registers, generate_next_row_core_registers, @@ -38,7 +36,7 @@ impl, const D: usize> SystemZero { let mut row = [F::ZERO; NUM_COLUMNS]; generate_first_row_core_registers(&mut row); - generate_arithmetic_unit(&mut row); + generate_alu(&mut row); generate_permutation_unit(&mut row); let mut trace = Vec::with_capacity(MIN_TRACE_ROWS); @@ -46,7 +44,7 @@ impl, const D: usize> SystemZero { loop { let mut next_row = [F::ZERO; NUM_COLUMNS]; generate_next_row_core_registers(&row, &mut next_row); - generate_arithmetic_unit(&mut next_row); + generate_alu(&mut next_row); generate_permutation_unit(&mut next_row); trace.push(row); @@ -84,7 +82,7 @@ impl, const D: usize> Stark for SystemZero, { eval_core_registers(vars, yield_constr); - eval_arithmetic_unit(vars, yield_constr); + eval_alu(vars, yield_constr); eval_permutation_unit::(vars, yield_constr); // TODO: Other units } @@ -96,7 +94,7 @@ impl, const D: usize> Stark for SystemZero, ) { eval_core_registers_recursively(builder, vars, yield_constr); - eval_arithmetic_unit_recursively(builder, vars, yield_constr); + eval_alu_recursively(builder, vars, yield_constr); eval_permutation_unit_recursively(builder, vars, yield_constr); // TODO: Other units }