GEM5 - Significance of fastmem in GEM5 while creating Simpoints/Checkpoints - gem5

While looking for how to do Simpoint analysis I found out that you need to run the following command for generating basic block vectors as the first step
% build/ARM/gem5.opt configs/example/se.py --simpoint-profile --simpoint-interval 10000000 --cpu-type=AtomicSimpleCPU --fastmem
but in the latest version of gem5, I see that the fastmem and its related code has been removed. Could someone tell me the significance of fastmem and would it matter if we generated the bbv without --fastmem?

Related

Mismatch between IDs from minidump_stalkwalk and dump_syms

I am trying to use google breakpad, but I am facing a strange issue.
i am working in linux. I have my own library, my_lib.so, which I process with dump_syms and generates this symbol :
$ dump_syms my_lib.so|head -2
MODULE Linux mips 3BB485681467218D36EB2FF02287096C0 my_lib.so
INFO CODE_ID 6885B43B67148D2136EB2FF02287096C
I create the symbols directory with the appropiate subdirectories. I then generate a minidump for the program that uses a stripped version of my_lib.so, but when I try to process it with minidump_stackwalk:
0x77dce000 - 0x77e23fff my_lib.so ??? (WARNING: No symbols, my_lib.so, AC40136B433E5A68F66CCE8C2C2E6C250)
It is seaching for a differente ID, AC40136B433E5A68F66CCE8C2C2E6C250, so it does not find the symbols. Why the mismatch?
Knowing that it searches for AC40136B433E5A68F66CCE8C2C2E6C250 I manually changed the tree directory in symbols, to match that one, just to test. I also changed the id inside the my_lib.so.sym file, and then minidump_stalkwalk does not complain about not finding the symbols, but still I can't see the stack trace.
Any ideas about this mismatch?
by the way, if I run readelf -n over the original library and the stripped one, I get the same GNU BUILD ID.

What does #+SKIP_ENV=true mean in this Makefile?

I'm tinkering with this project where Step 6 requires me to run a command like make db-prepare-artix7. This command corresponds to this section of the Makefile. I am confused by the #+SKIP_ENV=true in the recipe. What is #+SKIP_ENV here, and what does it do? Couldn't find anywhere referring to SKIP_ENV.
Thanks!
Explaining every part:
The # means the command will not be echoed by Make during recipe execution
The + means the command will be executed even during dry runs: make --dry-run ...
The SKIP_ENV=true is sh(ell) syntax for setting the environment variable SKIP_ENV to the string true for the duration of the command that follows
In your case the source ... command
The effect of SKIP_ENV depends on the command - dig deeper to find out

How do i set up instruction & data memory address when using "riscv32-unknown-elf-gcc"?

I designed RISCV32IM processor, and I used "riscv32-unknown-elf-gcc" to generate code for testing.
However, the PC(instruction memory address) value and data memory address of the generated code had arbitrary values. I used this command:
riscv32-unknown-elf-gcc -march=rv32im -mabi=ilp32 -nostartfiles test.c
Can I know if I can set the instruction and data memory address I want?
Thanks.
Thank you for answer.
I designed only HW, and this is my first time using the SW tool chain.
Even if my question is rudimentary, please understand.
The figure is the result of the "-v" option.
enter image description here
I can't modify the script file because I use riscv tool chain in DOCKER environment.
So, I tried to copy the script file (elf32lriscv.x), modify it.
I modified it to 0x10000 ==> 0x00000.
The file name of the copied script is "test5.x".
And it was executed as follows.
What am I doing wrong?
enter image description here
The riscv compiler is using the default linker script to place text and date section... .
If you add -v option to your command line riscv32-unknown-elf-gcc -v -march=rv32im -mabi=ilp32 -nostartfiles test.c, you will see the linker script used by collect 2 ( normally it will be -melf32lriscv . you can find the linker script in ${path_to_toolchain}/riscv32-unknown-elf/lib/ldscripts/ (the default one is .x).
You can also use riscv32-unknown-elf-ld --verbose like explained by #Frant. However , you need to be careful if the toolchain was compiled with enable multilib and you compile for rv64 but the default is rv32 or vice versa. It is not the case probably, but to be sure you can specify the arch with -A elf32riscv for an rv32.
To Set the addresses you can create your own linker script or copy and modify the default one. You can only modify the executable start like explained by #Frant or make more modification and place whatever you want where you want.
Once your own linker script ready you can pass it to the linker with -Wl,-T,${own_linker_script }. you command will be riscv32-unknown-elf-gcc -march=rv32im -mabi=ilp32 -nostartfiles test.c -Wl,-T,${own_linker_script }

How to implement delay for created pseudo instructions in gem5

I already implemented a new pseudo instruction to X86 isa in order to improve sha256 algorithm running time.
now I want to set a delay time for this new pseudo instruction but I don't know how to do it.
I already tried using speed function in implementing pseudo function in pseudo_inst.cc, but it is not working and number of ticks remains the same!
I actually run the execFile generated from compiling c file by command below:
~/gem5$ ./build/X86/gem5.opt cofigs/sample/Simple.py -c /home/myname/execFile

I am trying to implement Pocketsphinx running uClinux, but I keep getting "Phone is missing in acoustic model" errors

I am trying to run Pocketsphinx on a microcontroller running uClinux, I have installed pocketsphinx on the controller, but I keep getting several different errors regarding acoustic models and definitions. The current one I am facing is:
"Phone ... is missing in the acoustic model"
Replace the ... with every possible phonetic combination. It starts
off with A, then AE, then progresses to B etc.
I am trying to take a .wav file as input, and so this is the command I am using to run the software:
pocketsphinx_continuous -hmm /usr/share/pocketsphinx/model/hmm/en/tidigits/ -lm /usr/share/pocketsphinx/model/lm/en/tidigits.DMP -infile 1.wav -samprate 8000 -dict cmu07a.dic
Has anyone encountered this issue? if so, do you know a way to resolve it?
For tidigits model there is a special dictionary tidigits.dic in pocketsphinx/model/lm/en/tidigits.dic, you need to use with -dict option instead of cmu07a.dicin your command line.