From 57722675592b6e01d4e1be7632994e60bd1cf1f0 Mon Sep 17 00:00:00 2001 From: Adam Megacz Date: Sat, 22 Aug 2009 14:27:37 -0700 Subject: [PATCH] add Fleet.getMaxCodeBagSize() and makeCodeBagDescriptor() --- src/edu/berkeley/fleet/api/Fleet.java | 6 ++++++ src/edu/berkeley/fleet/loops/Program.java | 5 ++--- src/edu/berkeley/fleet/two/FleetTwoFleet.java | 13 +++++++++++++ 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/edu/berkeley/fleet/api/Fleet.java b/src/edu/berkeley/fleet/api/Fleet.java index ce0cfb2..361f5af 100644 --- a/src/edu/berkeley/fleet/api/Fleet.java +++ b/src/edu/berkeley/fleet/api/Fleet.java @@ -35,6 +35,12 @@ public abstract class Fleet implements Iterable { /** the width of the immediate field in the "set data latch" instruction */ public abstract int getSetWidth(); + + /** FIXME: this will soon become a property of individual memories rather than the entire Fleet */ + public abstract int getMaxCodeBagSize(); + + /** FIXME: this will soon become a property of individual memories rather than the entire Fleet */ + public abstract BitVector makeCodeBagDescriptor(long offset, long length); /** * Encodes an instruction as a BitVector diff --git a/src/edu/berkeley/fleet/loops/Program.java b/src/edu/berkeley/fleet/loops/Program.java index 8cd4b01..597549d 100644 --- a/src/edu/berkeley/fleet/loops/Program.java +++ b/src/edu/berkeley/fleet/loops/Program.java @@ -119,15 +119,14 @@ public class Program { // being dispatched than the maximum number that fit in the // data fifo at that dock. - int MAX_BAG_SIZE = (1<<6)-1; + int MAX_BAG_SIZE = fleet.getMaxCodeBagSize(); // FUZZ is an estimate of the number of instructions required // to dispatch a code bag descriptor int FUZZ = 4; if (instructions.length <= MAX_BAG_SIZE) { - BitVector descriptor = new BitVector(fleet.getWordWidth()); - descriptor.set( (leastUnallocatedAddress<<6) | instructions.length ); + BitVector descriptor = fleet.makeCodeBagDescriptor(leastUnallocatedAddress, instructions.length); leastUnallocatedAddress += instructions.length; for(Instruction i : instructions) all_instructions.add(i); diff --git a/src/edu/berkeley/fleet/two/FleetTwoFleet.java b/src/edu/berkeley/fleet/two/FleetTwoFleet.java index 7936ad0..7e3ee4f 100644 --- a/src/edu/berkeley/fleet/two/FleetTwoFleet.java +++ b/src/edu/berkeley/fleet/two/FleetTwoFleet.java @@ -261,6 +261,19 @@ public abstract class FleetTwoFleet extends Fleet { public int getShiftWidth() { return SHIFT.valmaskwidth; } public int getSetWidth() { return SET_IMMEDIATE.valmaskwidth+1; } + + public int getMaxCodeBagSize() { + return (1<