From 8e6dfa7211eaeba0dbca07e8bda549fdcad7a970 Mon Sep 17 00:00:00 2001 From: Nitload Date: Mon, 16 Mar 2026 07:15:19 +0800 Subject: [PATCH] temp --- .../HighPerformance/Memory/L4.CacheLine.cs | 51 +++++++++---------- .../HighPerformance/Memory/L4.Predict.cs | 51 +++++++++++++------ .../HighPerformance/Memory/L4.Prefetch.cs | 10 ++-- 3 files changed, 62 insertions(+), 50 deletions(-) diff --git a/StgSharp.Common/HighPerformance/Memory/L4.CacheLine.cs b/StgSharp.Common/HighPerformance/Memory/L4.CacheLine.cs index 5894bf40..ddfd9438 100644 --- a/StgSharp.Common/HighPerformance/Memory/L4.CacheLine.cs +++ b/StgSharp.Common/HighPerformance/Memory/L4.CacheLine.cs @@ -1,39 +1,34 @@ //----------------------------------------------------------------------- // ----------------------------------------------------------------------- -// file="L4.CacheLine" +// file="L4.CacheLine.cs" // Project: StgSharp // AuthorGroup: Nitload Space // Copyright (c) Nitload Space. All rights reserved. // -// 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 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. +// 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 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. // // ----------------------------------------------------------------------- // ----------------------------------------------------------------------- -using System; -using System.Collections.Generic; -using System.Linq; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; -using System.Runtime.Intrinsics; -using System.Runtime.Intrinsics.X86; -using System.Text; -using System.Threading.Tasks; namespace StgSharp.HighPerformance.Memory { @@ -54,11 +49,11 @@ namespace StgSharp.HighPerformance.Memory internal int _id; internal int _refCount; - - internal long _profile; internal nuint _address; internal nuint _origin; + internal ulong _profile; + } } diff --git a/StgSharp.Common/HighPerformance/Memory/L4.Predict.cs b/StgSharp.Common/HighPerformance/Memory/L4.Predict.cs index 26bff730..651aa891 100644 --- a/StgSharp.Common/HighPerformance/Memory/L4.Predict.cs +++ b/StgSharp.Common/HighPerformance/Memory/L4.Predict.cs @@ -2,8 +2,8 @@ // ----------------------------------------------------------------------- // file="L4.Predict" // Project: StgSharp -// AuthorGroup: Nitload -// Copyright (c) Nitload. All rights reserved. +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -36,29 +36,48 @@ namespace StgSharp.HighPerformance.Memory public interface IPrefetchPredict { - int Predict( - Span node - ); + int Predict(Span node); - bool Prefetch( - nuint origin, - ulong policy, - nuint cache - ); + bool Prefetch(nuint origin, ulong policy, nuint cache); - void WriteBack( - nuint origin, - ulong policy, - nuint cache - ); + void WriteBack(nuint origin, ulong policy, nuint cache); } - public struct CacheLinePrediction + public struct CacheLinePrediction : IEquatable { + public override readonly bool Equals(object? obj) + { + return obj is CacheLinePrediction prediction && + Address.Equals(prediction.Address) && + MapPolicy == prediction.MapPolicy; + } + + public readonly bool Equals(CacheLinePrediction other) + { + return + Address == other.Address && MapPolicy == other.MapPolicy; + } + + public override readonly int GetHashCode() + { + return HashCode.Combine(Address, MapPolicy); + } + + public static bool operator !=(CacheLinePrediction left, CacheLinePrediction right) + { + return !(left == right); + } + public static bool operator ==(CacheLinePrediction left, CacheLinePrediction right) + { + return left.Equals(right); + } + +#pragma warning disable CA1051 public nuint Address; public ulong MapPolicy; +#pragma warning restore CA1051 } } diff --git a/StgSharp.Common/HighPerformance/Memory/L4.Prefetch.cs b/StgSharp.Common/HighPerformance/Memory/L4.Prefetch.cs index 01da8ae0..dc0fcee9 100644 --- a/StgSharp.Common/HighPerformance/Memory/L4.Prefetch.cs +++ b/StgSharp.Common/HighPerformance/Memory/L4.Prefetch.cs @@ -2,8 +2,8 @@ // ----------------------------------------------------------------------- // file="L4.Prefetch" // Project: StgSharp -// AuthorGroup: Nitload -// Copyright (c) Nitload. All rights reserved. +// AuthorGroup: Nitload Space +// Copyright (c) Nitload Space. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -72,14 +72,12 @@ namespace StgSharp.HighPerformance.Memory } CacheLineHead* head = &_head[index]; - // pre fetch them here + PrefetchPredict.Prefetch(head->_origin, _head->_profile, _head->_address); } } - private partial bool TestHit( - nuint origin - ) + private partial bool TestHit(nuint origin) { if (_map.TryGet(origin, out nuint handle)) {