Skip to content

Latest commit

 

History

History
243 lines (177 loc) · 9.46 KB

HISTORY.md

File metadata and controls

243 lines (177 loc) · 9.46 KB

2.4.0 (2015-10-19)

ac_cache
  • All ac_cache files was moved from aclib/ac_storage to aclib/ac_cache
  • The cache PowerSC table is keeped in ac_cache and it is copied to share/archc/powersc during installation
  • Including cache coherence based on Directory
HLTrace
  • Improving the performance: some debugging function was removed
acsim
  • All acsim simulators are c++11 compatible
  • Simulators use pkg-config to check and setup SystemC and TLM
  • The boot.sh script was replaced by autogen.sh
  • Creating a environment file called 'env.sh' and it is copied in ArchC 'etc' directory during installation.
  • Two new reserved words to use in _isa.cpp and _syscall.cpp for access the first level of memory automatically. See the commit message.
  • Simulators with interrupt handler support
  • Better integration with MPSoCBench project
  • Many BUGFIX and code refactoring

Full changelog

2.3.0 (2015-05-27)

c++11
  • ArchC now compiles with c++11 std
GDB
  • Updated GDB protocol to work with both 'gdb-multiarch' and 'gdb cross'; the 'p' command was added.
acsim
  • Removed: flag HaveMultiCycleIns, pipe_list, stage_list, ACVerifyTimedFlag and ACVerifyFlag flag, startup, bhv_pc; and functions EmitInstrClasses, EmitFormatClasses , EmitGenInstrClass, EmitDecStruct from the processor code (generated by acsim)
  • Decode_pc was replaced by ac_pc;
  • Moved start up code from behavior function to init function, avoiding overhead;
  • Moved the set_prog_args function call from init to main function. This improves the integration with platforms;
  • Direct Threading Code;
  • set_proc_freq for setting processor frequency;
  • getId() function in arch header file (_arch.H);
HLTrace
  • High Level Trace Support: acsim -hlt
  • --disable-hlt option in ./configure to disable the High Level Trace;
TLM 2.0 Support
  • It is not necessary include --with-tlm as a configuration parameters, because the TLM path is automatically stored with the $SC_DIR/include;
  • TLM 2.0 Quantum keeper;
  • Instruction batch_size deprecated;
    • Implemented new TLM 2 ports + time annotation:
      • ac_tlm2_port for TLM blocking transport;
      • ac_tlm2_nb_port for TLM non blocking transport;
    • Support to read and write blocks of data
    • Some TLM2 features caused the improvement of ac_memport.H
  • Adding TLM2 interrupt with wake signal
Power Estimation Support
  • Removed the --with-powersc=<> option from ArchC configure. Now, the PowerSC is compiled by default; The PowerSC code is in the src/powersc directory and it will be compiled automatically with the ArchC code. Only the acsim has support for create processor models with power estimation using the -pw or --power arguments. Example: acsim powerpc.ac -pw .
ac_cache
  • Caches with:
    • fifo, lru, and random replacement policies;
    • write-back and write-through write policies;
  • ac_memport.H was updated to set size of data transferred between ac_memport and ac_cache (blockSize is in units of data);
  • Removed ac_cache.cpp and ac_cache_if.cpp from the ac_storage directory because the new ArchC cache do not need these files anymore;
acbingen.sh
  • Changed 'acbinutils' to compile binutils-2.24.51. Binutils old versions are no longer supported;
syscalls
  • Syscall method for Threading;
ac_utils.cpp
  • Now it's possible load a binary with --load=<prog_path> or -- <prog_path>. The new way enables the path's autocomplete;
ac_memport
  • Adding id of parent component, now only used for TML2 components;
General
  • SystemC 2.3.1 supported
  • clang-3.5 and clang++-3.5 supported
  • Standard c11/c++11 supported with clang/clang++ and gcc/g++
  • Separate build directory supporteds

Full changelog

2.2.0 (2012-11-04)

  • Added a instruction ./boot.sh in files README and INSTALL
  • Fix compilation with gcc 4.7

    • An explicit conversion between uint8_t * and ac_ptr was needed to
    • correctly match the overloaded function load_array
  • Fix compilation to work with std=c99 -std=c++03. Tested with:

    • gcc 4.7.2:
    • gcc 4.6.3
    • clang 3.0
    • SystemC 2.3.0
    • eglibc 2.15
  • SystemC:

    • Eliminate deprecation warning caused when running with SystemC 2.2.0
    • Full support for System 2.3.0
  • Switch INCLUDES to AM_CPPFLAGS in Makefile.am. INCLUDE in Makefile.am is deprecated.

  • Add descriptive message to configure output. Example: prefix: /opt/archc sysconfdir: ${prefix}/etc libdir: ${exec_prefix}/lib bindir: ${exec_prefix}/bin systemcdir: /opt/systemc tlmdir: /opt/systemc/include binutilsdir: gdbdir: c compiler: clang c++ compiler: clang++ cflags: -Werror -std=c99 -Wall cxxflags: -Werror -std=c++03 -Wall ldflags:

  • Fix random const issues in ac_storage

  • Fix warning when running libtoolize The two or three argument AM_INIT_AUTOMAKE call was deprecated. Part of it was fixed in previous commits, this patch only suppresses the warning message about it.

  • Updating nightlytester to work with GIT and the new ARM model (which has a different model name).

  • Implemented fork syscall

  • MacOSX partially supported

    • Adding macosx as a possible target to systemc in autoconf script
    • Small fix in boot script to support MacOSX libtoolize
    • ac_syscall modifications to support mac platforms
    • Add support for compiling ARCHC in MacOSX

Full changelog

2.1.0

  • The loader now supports dynamically linked executables.

  • Instruction formats for little endian models now changed. See ARM model for example.

  • ACCSIM is functional. See models for examples.

  • ARM model is functional.

Full changelog

2.0.0

Beta 3

  • keyword '#include' added to the language (it works pretty much the same as the one in C)

  • ac_group added to the parser and support for it added to acsim and actsim (see doc/adl_news.txt for further details)

  • ac_helper added to the parser and support for it added to acsim and actsim (see doc/adl_news.txt for further details)

  • The parser does not silently ignore name clashes within the following groups:

  • storage names, pipeline names and stage names in the form pipename_stagename
  • register formats
  • instruction formats
  • instruction groups (instruction names are still checked, like they were in previous versions)
  • acsim-generated simulators now have coarser context-switching:
  • the default now is to call wait() in the execution thread once for each 500 instructions, instead of once per instruction)
  • this leads to a huge (around 5~7 times compared to beta2) speedup but may cause problems in models with multiple processors or processors and TLM IPs should the processor need the assumption of context switching at each instruction (for instance, when it relies on instant response from non-blocking methods). In that case you need the...
  • set_instr_batch_size(sz) method: available on acsim-generated simulators. sz is an integer that determines the number of instructions to execute before switching context. Set it to 1 if you need beta2-like behavior.
  • if you want a standalone simulator (eg. just to run benchmark programs), acsim now offers a -nw (--no-wait) flag that generates a simulator which never switches context, thus allowing for very fast simulation (around 8 times faster than beta2)
  • actsim now allows multiple instantiation of generated simulators

  • actsim is using the SystemC scheduler now

  • disassembler (objdump) is automatically retargeted by acbingen (no additional changes in the models are necessary)

  • added '-s' option to the generated assembler. It turns off case sensitivity for mnemonics

  • models, language and tools with GPL license (public release). The version on SVN uses a special license

Beta 2

  • Preliminary statistics collection support (counts total number of instructions and syscalls, and for each instruction in the ISA, the number of times it was executed)

  • Preliminary TLM protocol support for bus/device locking/unlocking

  • GDB support now done via proc.enable_gdb() (a port number may be passed as an argument, otherwise it will work on port 5000)

  • ac_pc value modification methods on the processor module, means you can modify ac_pc via proc.set_ac_pc(val) or get the value of ac_pc by calling proc.get_ac_pc()

  • Several bugfixes

  • Support for cycle-accurate models (multicycle and single pipeline) is back via actsim (see doc/actsim.txt for further details)

Beta 1

  • Binary utilities generation is carried out by acbingen.sh script (assembler and linker generation)

  • Assembler generation is now part of binary utilities

  • Linker generation and integration with assembler added

  • acsim simulation generation tool now only generates functional simulators (there will be a separate tool for cycle-accurate, called actsim)

  • acsim-generated functional simulators are now up to 3~5 times faster compared to ArchC 1.6

  • self-contained acsim-generated functional simulators: it's possible to instantiate multiple simulators and integrate them to your system model written in pure SystemC

  • support for SystemC TLM communication: it is possible to declare TLM initiator ports on your processor, as well as interrupt ports

  • preliminary interrupt handling mechanism support