From: Adam Megacz Date: Sat, 22 Aug 2009 21:27:37 +0000 (-0700) Subject: add Fleet.getMaxCodeBagSize() and makeCodeBagDescriptor() X-Git-Url: http://git.megacz.com/?p=fleet.git;a=commitdiff_plain;h=57722675592b6e01d4e1be7632994e60bd1cf1f0 add Fleet.getMaxCodeBagSize() and makeCodeBagDescriptor() --- 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<