Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
ed991e3
fix: Correct the return value of the flag to bits
xusine Nov 6, 2024
a7ba244
fix: Limit the iteration count to generate ones
xusine Nov 6, 2024
b09a69b
fix: Remove the MMU copy from the page walker to avoid inconsistency
xusine Nov 6, 2024
9ca2741
fix: No need to connect the dependency again
xusine Nov 6, 2024
c3ef4e3
fix: Add debug symbol for release and remove decoding assertion
xusine Nov 7, 2024
1177bc2
fix: non branch instructions predicted as branch not causing redirect
xusine Nov 15, 2024
aee8f76
fix: LDR destination cannot be SP
xusine Nov 15, 2024
04f70b6
fix: read DAIF separately from PSTATE because qemu does not keep DAIf…
xusine Nov 15, 2024
27e0c11
fix: Atomic load register size
xusine Nov 15, 2024
d444a72
fix: DAIFset andDAIFclr not writing to the register
xusine Nov 19, 2024
141cf3a
LDR xzr forwarding
xusine Nov 19, 2024
1997ce4
Small fix for DAIFset
xusine Nov 19, 2024
335ec8a
fix: ADDSUB not using renamed pstate for NZCV
xusine Nov 21, 2024
eb8e627
DCZID_EL0 sync fix
xusine Nov 21, 2024
5a4590c
Fix: Write sysregs
xusine Nov 22, 2024
c72dcb5
fix: decoding of mem for prefetch and atomic
xusine Nov 26, 2024
fe1b621
feat:reorder drive loop
ayanchak1508 Dec 6, 2024
5fc2e07
feat: refactor to allow runtime constants
ayanchak1508 Dec 6, 2024
4581e52
fix: support diff width of uncore components
ayanchak1508 Dec 10, 2024
3af5678
feat: support for freq parameters
ayanchak1508 Dec 10, 2024
c75c9f0
feat: scheduling algo + frac frequencies
ayanchak1508 Dec 10, 2024
dd42b93
feat: reduced extra drives
ayanchak1508 Dec 13, 2024
b4b3f75
feat: refactor + per-core frequencies
ayanchak1508 Dec 16, 2024
efdc9cd
chore: Disable PhantomCPU idle log
xusine Feb 7, 2025
b846b99
feat: Dump the FW data structure when the timing simulation is done
xusine Feb 16, 2025
33c64d1
feat: Enhance the BTB statistics
xusine Feb 16, 2025
480f3b0
fix: Remove unused function and avoid exporting invalid BTB entry
xusine Feb 16, 2025
4c50f7d
fix: Set the branch target and the branch type for call instruction
xusine Feb 16, 2025
c5177d3
fix: TLB set index should not consider page offset
xusine Feb 16, 2025
c94c47d
chore: Clean up TAGE
xusine Feb 19, 2025
80e2a65
fix: Return instruction must be predicted from BTB and update history
xusine Feb 19, 2025
6c169b6
chore: Create a default full-one frequency table when the incoming fr…
xusine Feb 21, 2025
289bd24
ADDS and SUBS not setting overflow flag correctly
xusine Feb 24, 2025
535dd2c
signed division doing unsigned division fixed
xusine Feb 24, 2025
ef96748
CRC instructions are implemented
xusine Feb 24, 2025
9257aaa
multifrequency cycle count is connected to uncore for memory
xusine Feb 24, 2025
56f3e60
perfect TLB still resyncs MMU to avoid crashes dues to uninitialized …
xusine Feb 24, 2025
c6c810e
fix: Resync can overwrite existing resteer request
xusine Feb 25, 2025
8365ace
fix: update cache state handling for ReadAck to prevent exclusive copies
xusine Feb 25, 2025
bf4c49b
ADDS and SUBS not setting overflow flag correctly
xusine Feb 24, 2025
f9591e3
signed division doing unsigned division fixed
xusine Feb 24, 2025
ab5f341
CRC instructions are implemented
xusine Feb 24, 2025
943932f
fix: Resync can overwrite existing resteer request
xusine Feb 25, 2025
ca6cc1a
fix: update cache state handling for ReadAck to prevent exclusive copies
xusine Feb 25, 2025
20b190f
fix: Remove unused cycle count
xusine Feb 25, 2025
356e81a
Fix BP state
xusine Feb 27, 2025
b0a54f9
sync
xusine Mar 1, 2025
a8345e9
fix:revert freq calcs
ayanchak1508 Mar 10, 2025
0028f9d
Merge branch 'maintainer/cyan' into maintainer/ayan
ayanchak1508 Mar 10, 2025
6438e38
Merge branch 'maintainer/bugra' into maintainer/ayan
ayanchak1508 Mar 10, 2025
ce4c933
Merge branch 'maintainer/ayan' into maintainer/bugra
ayanchak1508 Mar 11, 2025
d432701
fix: extra instrn code
ayanchak1508 Mar 11, 2025
39ba2ad
fix: removed scaling + fixed qemu ticks
ayanchak1508 Mar 11, 2025
5c1d9e7
fix: return type fixes
ayanchak1508 Mar 11, 2025
5af68d8
feat: Implement checkpoint loading logic for standard directory
xusine Mar 13, 2025
8c0b200
fix: stdDir from cyan
xusine Mar 14, 2025
68717f5
nocout implemented
xusine Mar 14, 2025
e09dd5b
rename nocout knottykraken
xusine Mar 15, 2025
0c37dcd
perfect l1d
xusine Mar 15, 2025
ad1718b
MLP stat fix
xusine Mar 16, 2025
0870425
Merge branch 'maintainer/bugra' into maintainer/ayan
ayanchak1508 Mar 16, 2025
5766893
feat:InO modifs from goshuh
ayanchak1508 Mar 16, 2025
2b9e20d
fix: compilation bug fixes
ayanchak1508 Mar 16, 2025
c70667d
fix: more InO fixes from goshuh
ayanchak1508 Mar 16, 2025
182e327
RAS added
xusine Mar 14, 2025
367604b
fix: delete only when needed
ayanchak1508 Mar 16, 2025
0ade773
not all insts use mul
goshuh Mar 17, 2025
9afbca2
dispatch flush
goshuh Mar 17, 2025
4597d5a
reserve eu only when necessary
goshuh Mar 17, 2025
1d84735
Perfect BPU and FP blackbox and redirect cycles
aansaarii Mar 17, 2025
3c8c5c9
fix: dont squash squashed instr
ayanchak1508 Mar 18, 2025
c6789c4
update
goshuh Mar 18, 2025
f4802e7
dont flush an isntr at dispatch by a squash from a younger instr
goshuh Mar 19, 2025
bf3d3cd
exclude the case that no instr should be flushed
goshuh Mar 19, 2025
6b29f92
change debug flag with envvar
goshuh Mar 19, 2025
c5dcbd0
set debug override
goshuh Mar 19, 2025
9f7d48c
temp fix to counter
ayanchak1508 Mar 19, 2025
c07f3c5
Fix: InO core should not update scorboard on non-dispatched instructi…
BugraEryilmaz Mar 21, 2025
56fe378
precise squash calculation
goshuh Mar 22, 2025
9cb8351
atomics support
goshuh Mar 23, 2025
b124f4b
FP LDR/LDP/STR/STP
goshuh Mar 23, 2025
08075e1
ldrsb decode fix
goshuh Mar 23, 2025
34d0028
cas fix
goshuh Mar 23, 2025
797a6e1
load fixes
goshuh Mar 23, 2025
fa2a872
post-index ld/st1/2/3/4 support
goshuh Mar 23, 2025
736aa0d
refactor freq handling to fix for frac freq
ayanchak1508 Mar 23, 2025
47399b2
Merge branch 'maintainer/ayan' of github.com:parsa-epfl/flexus into m…
ayanchak1508 Mar 23, 2025
ad7c35b
in-order fix
goshuh Mar 23, 2025
0716351
ras fix
goshuh Mar 25, 2025
d6e1d2b
bp tunes
goshuh Mar 26, 2025
eae4ef2
limit wfoq
goshuh Mar 27, 2025
9105300
bp tune
goshuh Mar 28, 2025
b97dab8
BP stats
xusine Mar 28, 2025
0f2acc3
fix penalty counters
goshuh Mar 28, 2025
5046223
fix penalty counters
goshuh Mar 28, 2025
1a72916
fix BTB update call
aansaarii Mar 29, 2025
310deb0
ITTAGE added
aansaarii Mar 31, 2025
b676c22
fdip is added
aansaarii Apr 1, 2025
9525aab
reduce ins active at every cycle
goshuh Apr 1, 2025
61a61f4
debug logs for head of ROB blocking added
aansaarii Apr 16, 2025
a459a5d
Combining 5 actions required for LDR instructions into a single one. …
xusine May 2, 2025
e83dcbf
Small fix for LDAQ without CAS action
xusine May 2, 2025
4b6b239
cleanup old code being commented out in case of revert
xusine May 15, 2025
a7a1710
sync
xusine Jul 12, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
build/
lib/
CMakeUserPresets.json
build-*kraken*/


# Created by https://www.toptal.com/developers/gitignore/api/c,c++,git,vim,cmake,linux,macos,windows,archives,assembler,jetbrains+all,visualstudiocode,conan
Expand Down
72 changes: 72 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
{
"files.associations": {
"*.v": "coq",
"any": "cpp",
"array": "cpp",
"atomic": "cpp",
"bit": "cpp",
"*.tcc": "cpp",
"bitset": "cpp",
"cctype": "cpp",
"charconv": "cpp",
"chrono": "cpp",
"clocale": "cpp",
"cmath": "cpp",
"codecvt": "cpp",
"compare": "cpp",
"concepts": "cpp",
"cstdarg": "cpp",
"cstddef": "cpp",
"cstdint": "cpp",
"cstdio": "cpp",
"cstdlib": "cpp",
"cstring": "cpp",
"ctime": "cpp",
"cwchar": "cpp",
"cwctype": "cpp",
"deque": "cpp",
"forward_list": "cpp",
"list": "cpp",
"map": "cpp",
"set": "cpp",
"string": "cpp",
"unordered_map": "cpp",
"unordered_set": "cpp",
"vector": "cpp",
"exception": "cpp",
"algorithm": "cpp",
"functional": "cpp",
"iterator": "cpp",
"memory": "cpp",
"memory_resource": "cpp",
"numeric": "cpp",
"optional": "cpp",
"random": "cpp",
"ratio": "cpp",
"string_view": "cpp",
"system_error": "cpp",
"tuple": "cpp",
"type_traits": "cpp",
"utility": "cpp",
"format": "cpp",
"fstream": "cpp",
"initializer_list": "cpp",
"iomanip": "cpp",
"iosfwd": "cpp",
"iostream": "cpp",
"istream": "cpp",
"limits": "cpp",
"new": "cpp",
"numbers": "cpp",
"ostream": "cpp",
"ranges": "cpp",
"span": "cpp",
"sstream": "cpp",
"stdexcept": "cpp",
"streambuf": "cpp",
"cinttypes": "cpp",
"typeinfo": "cpp",
"valarray": "cpp",
"variant": "cpp"
}
}
4 changes: 2 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ include(./target/${SIMULATOR}/${SIMULATOR}.cmake)

# Setup include paths
include_directories(.)
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -Wall -Werror -Wno-error=maybe-uninitialized -Wno-error=dangling-pointer -fdiagnostics-color=always -g3 -gdwarf-5")
set(CMAKE_CXX_FLAGS "${CMAKE_C_FLAGS} -Wall -fdiagnostics-color=always -g3 -gdwarf-5")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -ggdb -fno-eliminate-unused-debug-symbols -fno-omit-frame-pointer -funroll-loops -fno-inline -fno-lto")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native -fno-omit-frame-pointer")

# Find boost
set(Boost_USE_DEBUG_LIBS OFF)
Expand Down
25 changes: 18 additions & 7 deletions components/BranchPredictor/BTBSet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,13 @@ BTBSet::BTBSet(uint32_t associativity)
void
BTBSet::updateReplacementQueue(uint32_t index)
{
replacementQueue.erase(std::remove(replacementQueue.begin(), replacementQueue.end(), index),
replacementQueue.end());
replacementQueue.insert(replacementQueue.end(), index);
for (auto i = replacementQueue.begin(); i != replacementQueue.end(); ++i)
if (*i == index) {
replacementQueue.erase(i);
break;
}

replacementQueue.push_back(index);
}

bool
Expand Down Expand Up @@ -56,10 +60,17 @@ BTBSet::access(VirtualMemoryAddress anAddress)
void
BTBSet::insert(BTBEntry btbEntry)
{
// TODO: Replacement is not needed if there is an invalid entry
uint32_t replacementQueueIndex = replacementQueue[0];
blocks[replacementQueueIndex] = btbEntry;
updateReplacementQueue(replacementQueueIndex);
for (uint32_t i = 0; i < blocks.size(); ++i) {
if (!blocks[i].valid) {
blocks[i] = btbEntry;
updateReplacementQueue(i);
return;
}
}

uint32_t index = replacementQueue.front();
blocks[index] = btbEntry;
updateReplacementQueue(index);
}

// [MADHUR] Invalidate entry if present
Expand Down
Loading