From 2724faf98021f066011a3faa1110bbd12f571033 Mon Sep 17 00:00:00 2001 From: KazushiM <85604869+KazushiMe@users.noreply.github.com> Date: Tue, 31 Aug 2021 00:25:44 +0800 Subject: [PATCH] - Add TinyMemBenchNX, a simple memory benchmark program based on [tinymembench](https://github.com/ssvb/tinymembench) - Sys-clk Fix: Ignore RAM clock values in config, or sys-clk will stuck in a loop of resetting RAM clocks (generating huge log file and degrading performance) - Fix: Temporary frequency override in sys-clk overlay/manager --- README.md | 1 + SdOut/atmosphere/config/system_settings.ini | 2 +- .../contents/00FF0000636C6BFF/exefs.nsp | Bin 167699 -> 167756 bytes SdOut/switch/.overlays/sys-clk-overlay.ovl | Bin 360504 -> 360504 bytes SdOut/switch/TinyMemBenchNX.nro | Bin 0 -> 293061 bytes SdOut/switch/sys-clk-manager.nro | Bin 8499253 -> 8499253 bytes Source/TinyMemBenchNX/Makefile | 224 +++++ Source/TinyMemBenchNX/source/aarch64-asm.h | 74 ++ Source/TinyMemBenchNX/source/aarch64-asm.s | 185 ++++ Source/TinyMemBenchNX/source/main.cpp | 940 ++++++++++++++++++ Source/sys-clk-OC/manager/Makefile | 2 +- Source/sys-clk-OC/overlay/Makefile | 2 +- Source/sys-clk-OC/sysmodule/Makefile | 2 +- .../sysmodule/src/clock_manager.cpp | 12 +- Source/sys-clk-OC/sysmodule/src/clocks.cpp | 12 +- Source/sys-clk-OC/sysmodule/src/clocks.h | 2 +- 16 files changed, 1449 insertions(+), 9 deletions(-) create mode 100644 SdOut/switch/TinyMemBenchNX.nro create mode 100644 Source/TinyMemBenchNX/Makefile create mode 100644 Source/TinyMemBenchNX/source/aarch64-asm.h create mode 100755 Source/TinyMemBenchNX/source/aarch64-asm.s create mode 100644 Source/TinyMemBenchNX/source/main.cpp diff --git a/README.md b/README.md index d90b7f6f..fb920700 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ Support latest Horizon OS (12.1.0) and Atmosphere (0.20.0). - Profile-aware clock override for all games - Game recording and SysDVR streaming @ 60fps with high video bitrate - Remove copyright watermark in screenshots/recordings, courtesy of [HookedBehemoth](https://github.com/HookedBehemoth/exefs_patches) +- **TinyMemBenchNX**: DRAM throughput and latency test based on [tinymembench](https://github.com/ssvb/tinymembench) #### Details diff --git a/SdOut/atmosphere/config/system_settings.ini b/SdOut/atmosphere/config/system_settings.ini index ac378ed6..b15fb71e 100644 --- a/SdOut/atmosphere/config/system_settings.ini +++ b/SdOut/atmosphere/config/system_settings.ini @@ -23,7 +23,7 @@ enable_halfawake = u32!0x0 minimum_interval_normal = u32!0x7FFFFFFF minimum_interval_save = u32!0x7FFFFFFF battery_threshold_save = u32!0x64 -battery_threshold_stop = u32!0x0 +battery_threshold_stop = u32!0x64 [npns] background_processing = u8!0x0 diff --git a/SdOut/atmosphere/contents/00FF0000636C6BFF/exefs.nsp b/SdOut/atmosphere/contents/00FF0000636C6BFF/exefs.nsp index 188e7522b0bb48c7b369c4e07e050f4973a8b931..fc4df389a4329a450591e0edf4d67a11ab72e0cd 100644 GIT binary patch delta 26635 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

kW!OQ8KNn=tG{-Ine};likBu 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 F{{!Mm>EZwY delta 12740 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

#N)gi*_}n}jhfFK3r!U{0221zOLm!&xLS^gT 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

    y4`3j#1{H2+*&AZtj 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 O1=tF(75Lj$;Qs-}ZAaYz literal 0 HcmV?d00001 diff --git a/SdOut/switch/sys-clk-manager.nro b/SdOut/switch/sys-clk-manager.nro index 296108069190122ccc3d85beac13ca0cd617bd1c..c7812a2d3de55cf5a6895553a8f0ecb36dea6505 100644 GIT binary patch delta 326 zcmWN=*D?bE7=Y11bWuXoh`RdP%?62Hq6@3{7QH8k-eTq(W^(6UWW0_m&*48aC-(bc ziOC3Y#FK!9M3P7*g;df=Cj%>)WRXn{Hgd_sPCf+`QbaK&I4H$Q8Rb+^Nfp&7)KE(u z^)%2(6DrMU=(sR&(?Tn4c<|Cr2c2}$O%J{F(a!)r1{q?Q5k?tfoC*9)GKI-BGt4r_ zJPRzc#4;$vh9{xfqTzweHS z3=>5(F*t}Nj(8GCB#C5FNF@y?F4D=sO(t1nlS3|f7gGNl6XvRwmt+dfj2c2}$O%FbL>7$^})oQ9@rhH9!ozixW%z?bd* nu#}KImlyI/devkitpro") +endif + +TOPDIR ?= $(CURDIR) +include $(DEVKITPRO)/libnx/switch_rules + +#--------------------------------------------------------------------------------- +# TARGET is the name of the output +# BUILD is the directory where object files & intermediate files will be placed +# SOURCES is a list of directories containing source code +# DATA is a list of directories containing data files +# INCLUDES is a list of directories containing header files +# ROMFS is the directory containing data to be added to RomFS, relative to the Makefile (Optional) +# +# NO_ICON: if set to anything, do not use icon. +# NO_NACP: if set to anything, no .nacp file is generated. +# APP_TITLE is the name of the app stored in the .nacp file (Optional) +# APP_AUTHOR is the author of the app stored in the .nacp file (Optional) +# APP_VERSION is the version of the app stored in the .nacp file (Optional) +# APP_TITLEID is the titleID of the app stored in the .nacp file (Optional) +# ICON is the filename of the icon (.jpg), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - .jpg +# - icon.jpg +# - /default_icon.jpg +# +# CONFIG_JSON is the filename of the NPDM config file (.json), relative to the project folder. +# If not set, it attempts to use one of the following (in this order): +# - .json +# - config.json +# If a JSON file is provided or autodetected, an ExeFS PFS0 (.nsp) is built instead +# of a homebrew executable (.nro). This is intended to be used for sysmodules. +# NACP building is skipped as well. +#--------------------------------------------------------------------------------- +TARGET := $(notdir $(CURDIR)) +BUILD := build +SOURCES := source +DATA := data +INCLUDES := include +#ROMFS := romfs + +TARGET_VERSION := 0.4.9 + +#--------------------------------------------------------------------------------- +# options for code generation +#--------------------------------------------------------------------------------- +ARCH := -march=armv8-a+crc+crypto -mtune=cortex-a57 -mtp=soft -fPIE -fPIC + +CFLAGS := -g -Wall -O3 -ffunction-sections -Wno-unused-variable -Wno-unused-but-set-variable \ + $(ARCH) $(DEFINES) + +CFLAGS += $(INCLUDE) -D__SWITCH__ + +CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions + +ASFLAGS := -g $(ARCH) +LDFLAGS = -specs=$(DEVKITPRO)/libnx/switch.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) + +LIBS := -lnx + +#--------------------------------------------------------------------------------- +# list of directories containing libraries, this must be the top level containing +# include and lib +#--------------------------------------------------------------------------------- +LIBDIRS := $(PORTLIBS) $(LIBNX) + + +#--------------------------------------------------------------------------------- +# no real need to edit anything past this point unless you need to add additional +# rules for different file extensions +#--------------------------------------------------------------------------------- +ifneq ($(BUILD),$(notdir $(CURDIR))) +#--------------------------------------------------------------------------------- + +export OUTPUT := $(CURDIR)/$(TARGET) +export TOPDIR := $(CURDIR) + +export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ + $(foreach dir,$(DATA),$(CURDIR)/$(dir)) + +export DEPSDIR := $(CURDIR)/$(BUILD) + +CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) +CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) +SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) +BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) + +#--------------------------------------------------------------------------------- +# use CXX for linking C++ projects, CC for standard C +#--------------------------------------------------------------------------------- +ifeq ($(strip $(CPPFILES)),) +#--------------------------------------------------------------------------------- + export LD := $(CC) +#--------------------------------------------------------------------------------- +else +#--------------------------------------------------------------------------------- + export LD := $(CXX) +#--------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------- + +export OFILES_BIN := $(addsuffix .o,$(BINFILES)) +export OFILES_SRC := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) +export OFILES := $(OFILES_BIN) $(OFILES_SRC) +export HFILES_BIN := $(addsuffix .h,$(subst .,_,$(BINFILES))) + +export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ + $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ + -I$(CURDIR)/$(BUILD) + +export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) + +ifeq ($(strip $(CONFIG_JSON)),) + jsons := $(wildcard *.json) + ifneq (,$(findstring $(TARGET).json,$(jsons))) + export APP_JSON := $(TOPDIR)/$(TARGET).json + else + ifneq (,$(findstring config.json,$(jsons))) + export APP_JSON := $(TOPDIR)/config.json + endif + endif +else + export APP_JSON := $(TOPDIR)/$(CONFIG_JSON) +endif + +ifeq ($(strip $(ICON)),) + icons := $(wildcard *.jpg) + ifneq (,$(findstring $(TARGET).jpg,$(icons))) + export APP_ICON := $(TOPDIR)/$(TARGET).jpg + else + ifneq (,$(findstring icon.jpg,$(icons))) + export APP_ICON := $(TOPDIR)/icon.jpg + endif + endif +else + export APP_ICON := $(TOPDIR)/$(ICON) +endif + +ifeq ($(strip $(NO_ICON)),) + export NROFLAGS += --icon=$(APP_ICON) +endif + +ifeq ($(strip $(NO_NACP)),) + export NROFLAGS += --nacp=$(CURDIR)/$(TARGET).nacp +endif + +ifneq ($(APP_TITLEID),) + export NACPFLAGS += --titleid=$(APP_TITLEID) +endif + +ifneq ($(ROMFS),) + export NROFLAGS += --romfsdir=$(CURDIR)/$(ROMFS) +endif + +.PHONY: $(BUILD) clean all + +#--------------------------------------------------------------------------------- +all: $(BUILD) + +$(BUILD): + @[ -d $@ ] || mkdir -p $@ + @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile + +#--------------------------------------------------------------------------------- +clean: + @echo clean ... +ifeq ($(strip $(APP_JSON)),) + @rm -fr $(BUILD) $(TARGET).nro $(TARGET).nacp $(TARGET).elf +else + @rm -fr $(BUILD) $(TARGET).nsp $(TARGET).nso $(TARGET).npdm $(TARGET).elf +endif + + +#--------------------------------------------------------------------------------- +else +.PHONY: all + +DEPENDS := $(OFILES:.o=.d) + +#--------------------------------------------------------------------------------- +# main targets +#--------------------------------------------------------------------------------- +ifeq ($(strip $(APP_JSON)),) + +all : $(OUTPUT).nro + +ifeq ($(strip $(NO_NACP)),) +$(OUTPUT).nro : $(OUTPUT).elf $(OUTPUT).nacp +else +$(OUTPUT).nro : $(OUTPUT).elf +endif + +else + +all : $(OUTPUT).nsp + +$(OUTPUT).nsp : $(OUTPUT).nso $(OUTPUT).npdm + +$(OUTPUT).nso : $(OUTPUT).elf + +endif + +$(OUTPUT).elf : $(OFILES) + +$(OFILES_SRC) : $(HFILES_BIN) + +#--------------------------------------------------------------------------------- +# you need a rule like this for each extension you use as binary data +#--------------------------------------------------------------------------------- +%.bin.o %_bin.h : %.bin +#--------------------------------------------------------------------------------- + @echo $(notdir $<) + @$(bin2o) + +-include $(DEPENDS) + +#--------------------------------------------------------------------------------------- +endif +#--------------------------------------------------------------------------------------- \ No newline at end of file diff --git a/Source/TinyMemBenchNX/source/aarch64-asm.h b/Source/TinyMemBenchNX/source/aarch64-asm.h new file mode 100644 index 00000000..a1a64e31 --- /dev/null +++ b/Source/TinyMemBenchNX/source/aarch64-asm.h @@ -0,0 +1,74 @@ +/* + * Copyright © 2016 Siarhei Siamashka + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifndef __AARCH64_ASM_H__ +#define __AARCH64_ASM_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +void aligned_block_copy_ldpstp_x_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); +void aligned_block_copy_ldpstp_q_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); +void aligned_block_copy_ld1st1_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); + +void aligned_block_copy_ldpstp_q_pf32_l2strm_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); +void aligned_block_copy_ldpstp_q_pf64_l2strm_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); +void aligned_block_copy_ldpstp_q_pf32_l1keep_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); +void aligned_block_copy_ldpstp_q_pf64_l1keep_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); + +void aligned_block_fill_stp_x_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); +void aligned_block_fill_stp_q_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); + +void aligned_block_fill_stnp_x_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); +void aligned_block_fill_stnp_q_aarch64(int64_t * __restrict dst, + int64_t * __restrict src, + int size); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/Source/TinyMemBenchNX/source/aarch64-asm.s b/Source/TinyMemBenchNX/source/aarch64-asm.s new file mode 100755 index 00000000..842b9e2d --- /dev/null +++ b/Source/TinyMemBenchNX/source/aarch64-asm.s @@ -0,0 +1,185 @@ +/* + * Copyright © 2016 Siarhei Siamashka + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +#ifdef __aarch64__ + + .cpu cortex-a53+fp+simd + .text + .align 2 + +#define PREFETCH_DISTANCE 320 + +.macro asm_function function_name + .global \function_name + .type \function_name,%function +.func \function_name +\function_name: + DST .req x0 + SRC .req x1 + SIZE .req x2 +.endm + +asm_function aligned_block_copy_ldpstp_x_aarch64 +0: + ldp x3, x4, [SRC, #(0 * 16)] + ldp x5, x6, [SRC, #(1 * 16)] + ldp x7, x8, [SRC, #(2 * 16)] + ldp x9, x10, [SRC, #(3 * 16)] + add SRC, SRC, #64 + stp x3, x4, [DST, #(0 * 16)] + stp x5, x6, [DST, #(1 * 16)] + stp x7, x8, [DST, #(2 * 16)] + stp x9, x10, [DST, #(3 * 16)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_copy_ldpstp_q_aarch64 +0: + ldp q0, q1, [SRC, #(0 * 32)] + ldp q2, q3, [SRC, #(1 * 32)] + add SRC, SRC, #64 + stp q0, q1, [DST, #(0 * 32)] + stp q2, q3, [DST, #(1 * 32)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_copy_ldpstp_q_pf32_l2strm_aarch64 +0: + prfm pldl2strm, [SRC, #(PREFETCH_DISTANCE + 0)] + ldp q0, q1, [SRC, #(0 * 32)] + prfm pldl2strm, [SRC, #(PREFETCH_DISTANCE + 32)] + ldp q2, q3, [SRC, #(1 * 32)] + add SRC, SRC, #64 + stp q0, q1, [DST, #(0 * 32)] + stp q2, q3, [DST, #(1 * 32)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_copy_ldpstp_q_pf64_l2strm_aarch64 +0: + prfm pldl2strm, [SRC, #(PREFETCH_DISTANCE)] + ldp q0, q1, [SRC, #(0 * 32)] + ldp q2, q3, [SRC, #(1 * 32)] + add SRC, SRC, #64 + stp q0, q1, [DST, #(0 * 32)] + stp q2, q3, [DST, #(1 * 32)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_copy_ldpstp_q_pf32_l1keep_aarch64 +0: + prfm pldl1keep, [SRC, #(PREFETCH_DISTANCE + 0)] + ldp q0, q1, [SRC, #(0 * 32)] + prfm pldl1keep, [SRC, #(PREFETCH_DISTANCE + 32)] + ldp q2, q3, [SRC, #(1 * 32)] + add SRC, SRC, #64 + stp q0, q1, [DST, #(0 * 32)] + stp q2, q3, [DST, #(1 * 32)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_copy_ldpstp_q_pf64_l1keep_aarch64 +0: + prfm pldl1keep, [SRC, #(PREFETCH_DISTANCE)] + ldp q0, q1, [SRC, #(0 * 32)] + ldp q2, q3, [SRC, #(1 * 32)] + add SRC, SRC, #64 + stp q0, q1, [DST, #(0 * 32)] + stp q2, q3, [DST, #(1 * 32)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_fill_stp_x_aarch64 +0: + stp x3, x4, [DST, #(0 * 16)] + stp x5, x6, [DST, #(1 * 16)] + stp x7, x8, [DST, #(2 * 16)] + stp x9, x10, [DST, #(3 * 16)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_fill_stp_q_aarch64 +0: + stp q0, q1, [DST, #(0 * 32)] + stp q2, q3, [DST, #(1 * 32)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_fill_stnp_x_aarch64 +0: + stnp x3, x4, [DST, #(0 * 16)] + stnp x5, x6, [DST, #(1 * 16)] + stnp x7, x8, [DST, #(2 * 16)] + stnp x9, x10, [DST, #(3 * 16)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_fill_stnp_q_aarch64 +0: + stnp q0, q1, [DST, #(0 * 32)] + stnp q2, q3, [DST, #(1 * 32)] + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +asm_function aligned_block_copy_ld1st1_aarch64 +0: + ld1 {v0.16b, v1.16b, v2.16b, v3.16b}, [SRC] + st1 {v0.16b, v1.16b, v2.16b, v3.16b}, [DST] + add SRC, SRC, #64 + add DST, DST, #64 + subs SIZE, SIZE, #64 + bgt 0b + ret +.endfunc + +#endif diff --git a/Source/TinyMemBenchNX/source/main.cpp b/Source/TinyMemBenchNX/source/main.cpp new file mode 100644 index 00000000..276a2121 --- /dev/null +++ b/Source/TinyMemBenchNX/source/main.cpp @@ -0,0 +1,940 @@ +/* + * Copyright © 2011 Siarhei Siamashka + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + * + * Switch port by Kazushi and built with libnx. + */ + +// Include the most common headers from the C standard library +#include +#include +#include +#include +#include +#include +#include +#include + +#define __ASM_OPT_H__ +#define SIZE (32 * 1024 * 1024) +#define BLOCKSIZE 2048 +#ifndef MAXREPEATS +# define MAXREPEATS 10 +#endif +#ifndef LATBENCH_COUNT +# define LATBENCH_COUNT 10000000 +#endif + +#define ALIGN_PADDING 0x100000 +#define CACHE_LINE_SIZE 128 + +#include "aarch64-asm.h" +#include + +using namespace std; + +PadState pad; + +typedef struct +{ + const char *description; + int use_tmpbuf; + void (*f)(int64_t *, int64_t *, int); +} bench_info; + +static char *align_up(char *ptr, int align) +{ + return (char *)(((uintptr_t)ptr + align - 1) & ~(uintptr_t)(align - 1)); +} + +void aligned_block_copy(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t t1, t2, t3, t4; + while ((size -= 64) >= 0) + { + t1 = *src++; + t2 = *src++; + t3 = *src++; + t4 = *src++; + *dst++ = t1; + *dst++ = t2; + *dst++ = t3; + *dst++ = t4; + t1 = *src++; + t2 = *src++; + t3 = *src++; + t4 = *src++; + *dst++ = t1; + *dst++ = t2; + *dst++ = t3; + *dst++ = t4; + } +} + +void aligned_block_copy_backwards(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t t1, t2, t3, t4; + src += size / 8 - 1; + dst += size / 8 - 1; + while ((size -= 64) >= 0) + { + t1 = *src--; + t2 = *src--; + t3 = *src--; + t4 = *src--; + *dst-- = t1; + *dst-- = t2; + *dst-- = t3; + *dst-- = t4; + t1 = *src--; + t2 = *src--; + t3 = *src--; + t4 = *src--; + *dst-- = t1; + *dst-- = t2; + *dst-- = t3; + *dst-- = t4; + } +} + +void aligned_block_copy_backwards_bs32(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t t1, t2, t3, t4; + src += size / 8 - 8; + dst += size / 8 - 8; + while ((size -= 64) >= 0) + { + t1 = src[4]; + t2 = src[5]; + t3 = src[6]; + t4 = src[7]; + dst[4] = t1; + dst[5] = t2; + dst[6] = t3; + dst[7] = t4; + t1 = src[0]; + t2 = src[1]; + t3 = src[2]; + t4 = src[3]; + dst[0] = t1; + dst[1] = t2; + dst[2] = t3; + dst[3] = t4; + src -= 8; + dst -= 8; + } +} + +void aligned_block_copy_backwards_bs64(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t t1, t2, t3, t4; + src += size / 8 - 8; + dst += size / 8 - 8; + while ((size -= 64) >= 0) + { + t1 = src[0]; + t2 = src[1]; + t3 = src[2]; + t4 = src[3]; + dst[0] = t1; + dst[1] = t2; + dst[2] = t3; + dst[3] = t4; + t1 = src[4]; + t2 = src[5]; + t3 = src[6]; + t4 = src[7]; + dst[4] = t1; + dst[5] = t2; + dst[6] = t3; + dst[7] = t4; + src -= 8; + dst -= 8; + } +} + +void aligned_block_copy_pf32(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t t1, t2, t3, t4; + while ((size -= 64) >= 0) + { + __builtin_prefetch(src + 32, 0, 0); + t1 = *src++; + t2 = *src++; + t3 = *src++; + t4 = *src++; + *dst++ = t1; + *dst++ = t2; + *dst++ = t3; + *dst++ = t4; + __builtin_prefetch(src + 32, 0, 0); + t1 = *src++; + t2 = *src++; + t3 = *src++; + t4 = *src++; + *dst++ = t1; + *dst++ = t2; + *dst++ = t3; + *dst++ = t4; + } +} + +void aligned_block_copy_pf64(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t t1, t2, t3, t4; + while ((size -= 64) >= 0) + { + __builtin_prefetch(src + 32, 0, 0); + t1 = *src++; + t2 = *src++; + t3 = *src++; + t4 = *src++; + *dst++ = t1; + *dst++ = t2; + *dst++ = t3; + *dst++ = t4; + t1 = *src++; + t2 = *src++; + t3 = *src++; + t4 = *src++; + *dst++ = t1; + *dst++ = t2; + *dst++ = t3; + *dst++ = t4; + } +} + +void aligned_block_fill(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t data = *src; + while ((size -= 64) >= 0) + { + *dst++ = data; + *dst++ = data; + *dst++ = data; + *dst++ = data; + *dst++ = data; + *dst++ = data; + *dst++ = data; + *dst++ = data; + } +} + +void aligned_block_fill_shuffle16(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t data = *src; + while ((size -= 64) >= 0) + { + dst[0 + 0] = data; + dst[1 + 0] = data; + dst[1 + 2] = data; + dst[0 + 2] = data; + dst[1 + 4] = data; + dst[0 + 4] = data; + dst[0 + 6] = data; + dst[1 + 6] = data; + dst += 8; + } +} + +void aligned_block_fill_shuffle32(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t data = *src; + while ((size -= 64) >= 0) + { + dst[3 + 0] = data; + dst[0 + 0] = data; + dst[2 + 0] = data; + dst[1 + 0] = data; + dst[3 + 4] = data; + dst[0 + 4] = data; + dst[2 + 4] = data; + dst[1 + 4] = data; + dst += 8; + } +} + +void aligned_block_fill_shuffle64(int64_t * __restrict dst_, + int64_t * __restrict src, + int size) +{ + volatile int64_t *dst = dst_; + int64_t data = *src; + while ((size -= 64) >= 0) + { + dst[5] = data; + dst[2] = data; + dst[7] = data; + dst[6] = data; + dst[1] = data; + dst[3] = data; + dst[0] = data; + dst[4] = data; + dst += 8; + } +} + +double gettime(void) +{ + struct timeval tv; + gettimeofday(&tv, NULL); + return (double)((int64_t)tv.tv_sec * 1000000 + tv.tv_usec) / 1000000.; +} + +static double bandwidth_bench_helper(int64_t *dstbuf, int64_t *srcbuf, + int64_t *tmpbuf, + int size, int blocksize, + const char *indent_prefix, + int use_tmpbuf, + void (*f)(int64_t *, int64_t *, int), + const char *description) +{ + int i, j, loopcount, innerloopcount, n; + double t1, t2; + double speed, maxspeed; + double s, s0, s1, s2; + + /* do up to MAXREPEATS measurements */ + s = s0 = s1 = s2 = 0; + maxspeed = 0; + for (n = 0; n < MAXREPEATS; n++) + { + f(dstbuf, srcbuf, size); + loopcount = 0; + innerloopcount = 1; + t1 = gettime(); + do + { + loopcount += innerloopcount; + if (use_tmpbuf) + { + for (i = 0; i < innerloopcount; i++) + { + for (j = 0; j < size; j += blocksize) + { + f(tmpbuf, srcbuf + j / sizeof(int64_t), blocksize); + f(dstbuf + j / sizeof(int64_t), tmpbuf, blocksize); + } + } + } + else + { + for (i = 0; i < innerloopcount; i++) + { + f(dstbuf, srcbuf, size); + } + } + innerloopcount *= 2; + t2 = gettime(); + } while (t2 - t1 < 0.5); + speed = (double)size * loopcount / (t2 - t1) / 1000000.; + + s0 += 1; + s1 += speed; + s2 += speed * speed; + + if (speed > maxspeed) + maxspeed = speed; + + if (s0 > 2) + { + s = sqrt((s0 * s2 - s1 * s1) / (s0 * (s0 - 1))); + if (s < maxspeed / 1000.) + break; + } + } + + if (maxspeed > 0 && s / maxspeed * 100. >= 0.1) + { + printf("%s%-52s : %8.1f MB/s (%.1f%%)\n", indent_prefix, description, + maxspeed, s / maxspeed * 100.); + } + else + { + printf("%s%-52s : %8.1f MB/s\n", indent_prefix, description, maxspeed); + } + consoleUpdate(NULL); + return maxspeed; +} + +void bandwidth_bench(int64_t *dstbuf, int64_t *srcbuf, int64_t *tmpbuf, + int size, int blocksize, const char *indent_prefix, + bench_info *bi) +{ + while (bi->f) + { + bandwidth_bench_helper(dstbuf, srcbuf, tmpbuf, size, blocksize, + indent_prefix, bi->use_tmpbuf, + bi->f, + bi->description); + bi++; + } +} + +void memcpy_wrapper(int64_t *dst, int64_t *src, int size) +{ + memcpy(dst, src, size); +} + +void memset_wrapper(int64_t *dst, int64_t *src, int size) +{ + memset(dst, src[0], size); +} + +static bench_info aarch64_neon[] = +{ + { "NEON LDP/STP copy", 0, aligned_block_copy_ldpstp_q_aarch64 }, + { "NEON LDP/STP copy pldl2strm (32 bytes step)", 0, aligned_block_copy_ldpstp_q_pf32_l2strm_aarch64 }, + { "NEON LDP/STP copy pldl2strm (64 bytes step)", 0, aligned_block_copy_ldpstp_q_pf64_l2strm_aarch64 }, + { "NEON LDP/STP copy pldl1keep (32 bytes step)", 0, aligned_block_copy_ldpstp_q_pf32_l1keep_aarch64 }, + { "NEON LDP/STP copy pldl1keep (64 bytes step)", 0, aligned_block_copy_ldpstp_q_pf64_l1keep_aarch64 }, + { "NEON LD1/ST1 copy", 0, aligned_block_copy_ld1st1_aarch64 }, + { "NEON STP fill", 0, aligned_block_fill_stp_q_aarch64 }, + { "NEON STNP fill", 0, aligned_block_fill_stnp_q_aarch64 }, + { "ARM LDP/STP copy", 0, aligned_block_copy_ldpstp_x_aarch64 }, + { "ARM STP fill", 0, aligned_block_fill_stp_x_aarch64 }, + { "ARM STNP fill", 0, aligned_block_fill_stnp_x_aarch64 }, + { NULL, 0, NULL } +}; + +bench_info *get_asm_benchmarks(void) +{ + return aarch64_neon; +} + +static bench_info c_benchmarks[] = +{ + { "C copy backwards", 0, aligned_block_copy_backwards }, + { "C copy backwards (32 byte blocks)", 0, aligned_block_copy_backwards_bs32 }, + { "C copy backwards (64 byte blocks)", 0, aligned_block_copy_backwards_bs64 }, + { "C copy", 0, aligned_block_copy }, + { "C copy prefetched (32 bytes step)", 0, aligned_block_copy_pf32 }, + { "C copy prefetched (64 bytes step)", 0, aligned_block_copy_pf64 }, + { "C 2-pass copy", 1, aligned_block_copy }, + { "C 2-pass copy prefetched (32 bytes step)", 1, aligned_block_copy_pf32 }, + { "C 2-pass copy prefetched (64 bytes step)", 1, aligned_block_copy_pf64 }, + { "C fill", 0, aligned_block_fill }, + { "C fill (shuffle within 16 byte blocks)", 0, aligned_block_fill_shuffle16 }, + { "C fill (shuffle within 32 byte blocks)", 0, aligned_block_fill_shuffle32 }, + { "C fill (shuffle within 64 byte blocks)", 0, aligned_block_fill_shuffle64 }, + { NULL, 0, NULL } +}; + +static bench_info libc_benchmarks[] = +{ + { "standard memcpy", 0, memcpy_wrapper }, + { "standard memset", 0, memset_wrapper }, + { NULL, 0, NULL } +}; + +void *alloc_four_nonaliased_buffers(void **buf1_, int size1, + void **buf2_, int size2, + void **buf3_, int size3, + void **buf4_, int size4) +{ + char **buf1 = (char **)buf1_, **buf2 = (char **)buf2_; + char **buf3 = (char **)buf3_, **buf4 = (char **)buf4_; + int antialias_pattern_mask = (ALIGN_PADDING - 1) & ~(CACHE_LINE_SIZE - 1); + char *buf, *ptr; + + if (!buf1 || size1 < 0) + size1 = 0; + if (!buf2 || size2 < 0) + size2 = 0; + if (!buf3 || size3 < 0) + size3 = 0; + if (!buf4 || size4 < 0) + size4 = 0; + + ptr = buf = + (char *)malloc(size1 + size2 + size3 + size4 + 9 * ALIGN_PADDING); + memset(buf, 0xCC, size1 + size2 + size3 + size4 + 9 * ALIGN_PADDING); + + ptr = align_up(ptr, ALIGN_PADDING); + if (buf1) + { + *buf1 = ptr + (0xAAAAAAAA & antialias_pattern_mask); + ptr = align_up(*buf1 + size1, ALIGN_PADDING); + } + if (buf2) + { + *buf2 = ptr + (0x55555555 & antialias_pattern_mask); + ptr = align_up(*buf2 + size2, ALIGN_PADDING); + } + if (buf3) + { + *buf3 = ptr + (0xCCCCCCCC & antialias_pattern_mask); + ptr = align_up(*buf3 + size3, ALIGN_PADDING); + } + if (buf4) + { + *buf4 = ptr + (0x33333333 & antialias_pattern_mask); + } + + return buf; +} + +static void __attribute__((noinline)) random_read_test(char *zerobuffer, + int count, int nbits) +{ + uint32_t seed = 0; + uintptr_t addrmask = (1 << nbits) - 1; + uint32_t v; + static volatile uint32_t dummy; + +#ifdef __arm__ + uint32_t tmp; + __asm__ volatile ( + "subs %[count], %[count], #16\n" + "blt 1f\n" + "0:\n" + "subs %[count], %[count], #16\n" + ".rept 16\n" + "mla %[seed], %[c1103515245], %[seed], %[c12345]\n" + "and %[v], %[xFF], %[seed], lsr #16\n" + "mla %[seed], %[c1103515245], %[seed], %[c12345]\n" + "and %[tmp], %[xFF00], %[seed], lsr #8\n" + "mla %[seed], %[c1103515245], %[seed], %[c12345]\n" + "orr %[v], %[v], %[tmp]\n" + "and %[tmp], %[x7FFF0000], %[seed]\n" + "orr %[v], %[v], %[tmp]\n" + "and %[v], %[v], %[addrmask]\n" + "ldrb %[v], [%[zerobuffer], %[v]]\n" + "orr %[seed], %[seed], %[v]\n" + ".endr\n" + "bge 0b\n" + "1:\n" + "add %[count], %[count], #16\n" + : [count] "+&r" (count), + [seed] "+&r" (seed), [v] "=&r" (v), + [tmp] "=&r" (tmp) + : [c1103515245] "r" (1103515245), [c12345] "r" (12345), + [xFF00] "r" (0xFF00), [xFF] "r" (0xFF), + [x7FFF0000] "r" (0x7FFF0000), + [zerobuffer] "r" (zerobuffer), + [addrmask] "r" (addrmask) + : "cc"); +#else + #define RANDOM_MEM_ACCESS() \ + seed = seed * 1103515245 + 12345; \ + v = (seed >> 16) & 0xFF; \ + seed = seed * 1103515245 + 12345; \ + v |= (seed >> 8) & 0xFF00; \ + seed = seed * 1103515245 + 12345; \ + v |= seed & 0x7FFF0000; \ + seed |= zerobuffer[v & addrmask]; + + while (count >= 16) { + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + count -= 16; + } +#endif + dummy = seed; + #undef RANDOM_MEM_ACCESS +} + +static void __attribute__((noinline)) random_dual_read_test(char *zerobuffer, + int count, int nbits) +{ + uint32_t seed = 0; + uintptr_t addrmask = (1 << nbits) - 1; + uint32_t v1, v2; + static volatile uint32_t dummy; + +#ifdef __arm__ + uint32_t tmp; + __asm__ volatile ( + "subs %[count], %[count], #16\n" + "blt 1f\n" + "0:\n" + "subs %[count], %[count], #16\n" + ".rept 16\n" + "mla %[seed], %[c1103515245], %[seed], %[c12345]\n" + "and %[v1], %[xFF00], %[seed], lsr #8\n" + "mla %[seed], %[c1103515245], %[seed], %[c12345]\n" + "and %[v2], %[xFF00], %[seed], lsr #8\n" + "mla %[seed], %[c1103515245], %[seed], %[c12345]\n" + "and %[tmp], %[x7FFF0000], %[seed]\n" + "mla %[seed], %[c1103515245], %[seed], %[c12345]\n" + "orr %[v1], %[v1], %[tmp]\n" + "and %[tmp], %[x7FFF0000], %[seed]\n" + "mla %[seed], %[c1103515245], %[seed], %[c12345]\n" + "orr %[v2], %[v2], %[tmp]\n" + "and %[tmp], %[xFF], %[seed], lsr #16\n" + "orr %[v2], %[v2], %[seed], lsr #24\n" + "orr %[v1], %[v1], %[tmp]\n" + "and %[v2], %[v2], %[addrmask]\n" + "eor %[v1], %[v1], %[v2]\n" + "and %[v1], %[v1], %[addrmask]\n" + "ldrb %[v2], [%[zerobuffer], %[v2]]\n" + "ldrb %[v1], [%[zerobuffer], %[v1]]\n" + "orr %[seed], %[seed], %[v2]\n" + "add %[seed], %[seed], %[v1]\n" + ".endr\n" + "bge 0b\n" + "1:\n" + "add %[count], %[count], #16\n" + : [count] "+&r" (count), + [seed] "+&r" (seed), [v1] "=&r" (v1), [v2] "=&r" (v2), + [tmp] "=&r" (tmp) + : [c1103515245] "r" (1103515245), [c12345] "r" (12345), + [xFF00] "r" (0xFF00), [xFF] "r" (0xFF), + [x7FFF0000] "r" (0x7FFF0000), + [zerobuffer] "r" (zerobuffer), + [addrmask] "r" (addrmask) + : "cc"); +#else + #define RANDOM_MEM_ACCESS() \ + seed = seed * 1103515245 + 12345; \ + v1 = (seed >> 8) & 0xFF00; \ + seed = seed * 1103515245 + 12345; \ + v2 = (seed >> 8) & 0xFF00; \ + seed = seed * 1103515245 + 12345; \ + v1 |= seed & 0x7FFF0000; \ + seed = seed * 1103515245 + 12345; \ + v2 |= seed & 0x7FFF0000; \ + seed = seed * 1103515245 + 12345; \ + v1 |= (seed >> 16) & 0xFF; \ + v2 |= (seed >> 24); \ + v2 &= addrmask; \ + v1 ^= v2; \ + seed |= zerobuffer[v2]; \ + seed += zerobuffer[v1 & addrmask]; + + while (count >= 16) { + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + RANDOM_MEM_ACCESS(); + count -= 16; + } +#endif + dummy = seed; + #undef RANDOM_MEM_ACCESS +} + +static uint32_t rand32() +{ + static int seed = 0; + uint32_t hi, lo; + hi = (seed = seed * 1103515245 + 12345) >> 16; + lo = (seed = seed * 1103515245 + 12345) >> 16; + return (hi << 16) + lo; +} + +int latency_bench(int size, int count, int use_hugepage) +{ + double t, t2, t_before, t_after, t_noaccess, t_noaccess2 = 0; + double xs, xs0, xs1, xs2; + double ys, ys0, ys1, ys2; + double min_t, min_t2; + int nbits, n; + char *buffer, *buffer_alloc; +#if !defined(__linux__) || !defined(MADV_HUGEPAGE) + if (use_hugepage) + return 0; + buffer_alloc = (char *)malloc(size + 4095); + if (!buffer_alloc) + return 0; + buffer = (char *)(((uintptr_t)buffer_alloc + 4095) & ~(uintptr_t)4095); +#else + if (posix_memalign((void **)&buffer_alloc, 4 * 1024 * 1024, size) != 0) + return 0; + buffer = buffer_alloc; + if (use_hugepage && madvise(buffer, size, use_hugepage > 0 ? + MADV_HUGEPAGE : MADV_NOHUGEPAGE) != 0) + { + free(buffer_alloc); + return 0; + } +#endif + memset(buffer, 0, size); + + for (n = 1; n <= MAXREPEATS; n++) + { + t_before = gettime(); + random_read_test(buffer, count, 1); + t_after = gettime(); + if (n == 1 || t_after - t_before < t_noaccess) + t_noaccess = t_after - t_before; + + t_before = gettime(); + random_dual_read_test(buffer, count, 1); + t_after = gettime(); + if (n == 1 || t_after - t_before < t_noaccess2) + t_noaccess2 = t_after - t_before; + } + + printf("\nblock size : single random read / dual random read"); + if (use_hugepage > 0) + printf(", [MADV_HUGEPAGE]\n"); + else if (use_hugepage < 0) + printf(", [MADV_NOHUGEPAGE]\n"); + else + printf("\n"); + + consoleUpdate(NULL); + + for (nbits = 10; (1 << nbits) <= size; nbits++) + { + int testsize = 1 << nbits; + xs1 = xs2 = ys = ys1 = ys2 = 0; + for (n = 1; n <= MAXREPEATS; n++) + { + int testoffs = (rand32() % (size / testsize)) * testsize; + + t_before = gettime(); + random_read_test(buffer + testoffs, count, nbits); + t_after = gettime(); + t = t_after - t_before - t_noaccess; + if (t < 0) t = 0; + + xs1 += t; + xs2 += t * t; + + if (n == 1 || t < min_t) + min_t = t; + + t_before = gettime(); + random_dual_read_test(buffer + testoffs, count, nbits); + t_after = gettime(); + t2 = t_after - t_before - t_noaccess2; + if (t2 < 0) t2 = 0; + + ys1 += t2; + ys2 += t2 * t2; + + if (n == 1 || t2 < min_t2) + min_t2 = t2; + + if (n > 2) + { + xs = sqrt((xs2 * n - xs1 * xs1) / (n * (n - 1))); + ys = sqrt((ys2 * n - ys1 * ys1) / (n * (n - 1))); + if (xs < min_t / 1000. && ys < min_t2 / 1000.) + break; + } + } + printf("%10d : %6.1f ns / %6.1f ns \n", (1 << nbits), + min_t * 1000000000. / count, min_t2 * 1000000000. / count); + + consoleUpdate(NULL); + } + free(buffer_alloc); + return 1; +} + +void waitForKeyA() { + while (appletMainLoop()) + { + padUpdate(&pad); + + u64 kDown = padGetButtonsDown(&pad); + + if (kDown & HidNpadButton_A) + break; + else if(kDown) + { + consoleExit(NULL); + exit(0); + } + + consoleUpdate(NULL); + } +} + +void printClock() +{ + int res = 0; + uint32_t cpu_hz = 0, mem_hz = 0; + + ClkrstSession clkrstSession; + res = clkrstInitialize(); + if(R_FAILED(res)) { + fatalThrow(res); + } + + clkrstOpenSession(&clkrstSession, PcvModuleId_CpuBus, 3); + clkrstGetClockRate(&clkrstSession, &cpu_hz); + clkrstCloseSession(&clkrstSession); + clkrstOpenSession(&clkrstSession, PcvModuleId_EMC, 3); + clkrstGetClockRate(&clkrstSession, &mem_hz); + clkrstCloseSession(&clkrstSession); + + printf("== CPU: %u.%u MHz == MEM: %u.%u MHz ==\n", + cpu_hz/1000000, cpu_hz/100000 - cpu_hz/1000000*10, + mem_hz/1000000, mem_hz/100000 - mem_hz/1000000*10); + consoleUpdate(NULL); +} + +// Main program entrypoint +int main(int argc, char* argv[]) +{ + consoleInit(NULL); + + padConfigureInput(1, HidNpadStyleSet_NpadStandard); + + padInitializeDefault(&pad); + + int latbench_size = SIZE * 2, latbench_count = LATBENCH_COUNT; + int64_t *srcbuf, *dstbuf, *tmpbuf; + void *poolbuf; + size_t bufsize = SIZE; + + printf("tinymembench v0.4.9 (simple benchmark for memory throughput and latency)\n"); + + + poolbuf = alloc_four_nonaliased_buffers((void **)&srcbuf, bufsize, + (void **)&dstbuf, bufsize, + (void **)&tmpbuf, BLOCKSIZE, + NULL, 0); + printf("\n"); + printf("==========================================================================\n"); + printf("== Memory bandwidth tests ==\n"); + printf("== ==\n"); + printf("== Note 1: 1MB = 1000000 bytes ==\n"); + printf("== Note 2: Results for 'copy' tests show how many bytes can be ==\n"); + printf("== copied per second (adding together read and writen ==\n"); + printf("== bytes would have provided twice higher numbers) ==\n"); + printf("== Note 3: 2-pass copy means that we are using a small temporary buffer ==\n"); + printf("== to first fetch data into it, and only then write it to the ==\n"); + printf("== destination (source -> L1 cache, L1 cache -> destination) ==\n"); + printf("== Note 4: If sample standard deviation exceeds 0.1%%, it is shown in ==\n"); + printf("== brackets ==\n"); + printf("==========================================================================\n\n"); + + consoleUpdate(NULL); + + printf("!!! Memory bandwidth heavily depends on CPU clock. !!!\n\n"); + printClock(); + printf("Press A to start bandwidth test, any other key to exit.\n\n"); + waitForKeyA(); + + bandwidth_bench(dstbuf, srcbuf, tmpbuf, bufsize, BLOCKSIZE, " ", c_benchmarks); + printf(" ---\n"); + + bandwidth_bench(dstbuf, srcbuf, tmpbuf, bufsize, BLOCKSIZE, " ", libc_benchmarks); + bench_info *bi = get_asm_benchmarks(); + if (bi->f) { + printf(" ---\n"); + bandwidth_bench(dstbuf, srcbuf, tmpbuf, bufsize, BLOCKSIZE, " ", bi); + } + + free(poolbuf); + + printf("\nPress A to continue, any other key to exit.\n\n"); + waitForKeyA(); + consoleClear(); + + printf("\n"); + printf("==========================================================================\n"); + printf("== Memory latency test ==\n"); + printf("== ==\n"); + printf("== Average time is measured for random memory accesses in the buffers ==\n"); + printf("== of different sizes. The larger is the buffer, the more significant ==\n"); + printf("== are relative contributions of TLB, L1/L2 cache misses and SDRAM ==\n"); + printf("== accesses. For extremely large buffer sizes we are expecting to see ==\n"); + printf("== page table walk with several requests to SDRAM for almost every ==\n"); + printf("== memory access (though 64MiB is not nearly large enough to experience ==\n"); + printf("== this effect to its fullest). ==\n"); + printf("== ==\n"); + printf("== Note 1: All the numbers are representing extra time, which needs to ==\n"); + printf("== be added to L1 cache latency. The cycle timings for L1 cache ==\n"); + printf("== latency can be usually found in the processor documentation. ==\n"); + printf("== Note 2: Dual random read means that we are simultaneously performing ==\n"); + printf("== two independent memory accesses at a time. In the case if ==\n"); + printf("== the memory subsystem can't handle multiple outstanding ==\n"); + printf("== requests, dual random read has the same timings as two ==\n"); + printf("== single reads performed one after another. ==\n"); + printf("==========================================================================\n\n"); + + consoleUpdate(NULL); + printClock(); + printf("Press A to start latency test, any other key to exit.\n\n"); + waitForKeyA(); + + if (!latency_bench(latbench_size, latbench_count, -1) || + !latency_bench(latbench_size, latbench_count, 1)) + { + latency_bench(latbench_size, latbench_count, 0); + } + + printf("\nPress any key to exit.\n"); + waitForKeyA(); + + // Deinitialize and clean up resources used by the console (important!) + consoleExit(NULL); + return 0; +} \ No newline at end of file diff --git a/Source/sys-clk-OC/manager/Makefile b/Source/sys-clk-OC/manager/Makefile index 2a41992c..dd5bdd18 100644 --- a/Source/sys-clk-OC/manager/Makefile +++ b/Source/sys-clk-OC/manager/Makefile @@ -54,7 +54,7 @@ APP_RESOURCES := romfs:/ #--------------------------------------------------------------------------------- # version control constants #--------------------------------------------------------------------------------- -TARGET_VERSION := $(shell git describe --dirty --always --tags) +TARGET_VERSION := OC-$$(date +%Y/%m/%d) APP_VERSION := $(TARGET_VERSION) #--------------------------------------------------------------------------------- diff --git a/Source/sys-clk-OC/overlay/Makefile b/Source/sys-clk-OC/overlay/Makefile index d44a28bf..35a25761 100644 --- a/Source/sys-clk-OC/overlay/Makefile +++ b/Source/sys-clk-OC/overlay/Makefile @@ -32,7 +32,7 @@ NO_ICON := 1 #--------------------------------------------------------------------------------- # version control constants #--------------------------------------------------------------------------------- -TARGET_VERSION := $(shell git describe --dirty --always --tags) +TARGET_VERSION := OC-$$(date +%Y/%m/%d) APP_VERSION := $(TARGET_VERSION) #--------------------------------------------------------------------------------- diff --git a/Source/sys-clk-OC/sysmodule/Makefile b/Source/sys-clk-OC/sysmodule/Makefile index 27dc4fb5..af418d5f 100644 --- a/Source/sys-clk-OC/sysmodule/Makefile +++ b/Source/sys-clk-OC/sysmodule/Makefile @@ -30,7 +30,7 @@ LIBNAMES := minIni nxExt #--------------------------------------------------------------------------------- # version control constants #--------------------------------------------------------------------------------- -TARGET_VERSION := OC-$(shell git describe --dirty --always --tags) +TARGET_VERSION := OC-$$(date +%Y/%m/%d) #--------------------------------------------------------------------------------- # options for code generation diff --git a/Source/sys-clk-OC/sysmodule/src/clock_manager.cpp b/Source/sys-clk-OC/sysmodule/src/clock_manager.cpp index da6c6ee7..72b158bb 100644 --- a/Source/sys-clk-OC/sysmodule/src/clock_manager.cpp +++ b/Source/sys-clk-OC/sysmodule/src/clock_manager.cpp @@ -214,7 +214,7 @@ void ClockManager::Tick() { std::uint32_t hz = 0; std::uint32_t hzForceOverride = 0; - for (unsigned int module = 0; module < SysClkModule_EnumMax; module++) + for (unsigned int module = 0; module < SysClkModule_EnumMax - 1; module++) { hz = this->context->overrideFreqs[module]; @@ -456,6 +456,15 @@ bool ClockManager::RefreshContext() for (unsigned int module = 0; module < SysClkModule_EnumMax; module++) { hz = Clocks::GetCurrentHz((SysClkModule)module); + + // Skip MEM freq check + if (module == SysClkModule_MEM) + { + this->context->freqs[module] = hz; + break; + } + + // Round to MHz uint32_t cur_mhz = hz/1000'000; uint32_t be4_mhz = this->context->freqs[module]/1000'000; if (hz != 0 && cur_mhz != be4_mhz) @@ -475,6 +484,7 @@ bool ClockManager::RefreshContext() else { FileUtils::LogLine("[mgr] %s override disabled", Clocks::GetModuleName((SysClkModule)module, true)); + Clocks::ResetToStock(module); } this->context->overrideFreqs[module] = hz; hasChanged = true; diff --git a/Source/sys-clk-OC/sysmodule/src/clocks.cpp b/Source/sys-clk-OC/sysmodule/src/clocks.cpp index 4de486df..7897cccf 100644 --- a/Source/sys-clk-OC/sysmodule/src/clocks.cpp +++ b/Source/sys-clk-OC/sysmodule/src/clocks.cpp @@ -167,7 +167,7 @@ PcvModuleId Clocks::GetPcvModuleId(SysClkModule sysclkModule) return pcvModuleId; } -void Clocks::ResetToStock() +void Clocks::ResetToStock(unsigned int module) { Result rc = 0; if(hosversionAtLeast(9,0,0)) @@ -191,8 +191,14 @@ void Clocks::ResetToStock() ERROR_THROW("Unknown apm configuration: %x", confId); } - Clocks::SetHz(SysClkModule_CPU, apmConfiguration->cpu_hz); - Clocks::SetHz(SysClkModule_GPU, apmConfiguration->gpu_hz); + if (module == SysClkModule_EnumMax || module == SysClkModule_CPU) + { + Clocks::SetHz(SysClkModule_CPU, apmConfiguration->cpu_hz); + } + if (module == SysClkModule_EnumMax || module == SysClkModule_GPU) + { + Clocks::SetHz(SysClkModule_GPU, apmConfiguration->gpu_hz); + } // We don't need to set MEM freqs any more //Clocks::SetHz(SysClkModule_MEM, apmConfiguration->mem_hz); } diff --git a/Source/sys-clk-OC/sysmodule/src/clocks.h b/Source/sys-clk-OC/sysmodule/src/clocks.h index 5ff180bd..b6161621 100644 --- a/Source/sys-clk-OC/sysmodule/src/clocks.h +++ b/Source/sys-clk-OC/sysmodule/src/clocks.h @@ -19,7 +19,7 @@ class Clocks static bool isMariko; static void Exit(); static void Initialize(); - static void ResetToStock(); + static void ResetToStock(unsigned int module = SysClkModule_EnumMax); static SysClkProfile GetCurrentProfile(); static std::uint32_t GetCurrentHz(SysClkModule module); static void SetHz(SysClkModule module, std::uint32_t hz);